极客江南: 一个对开发技术特别执着的程序员,对移动开发有着独到的见解和深入的研究,有着多年的iOS、Android、HTML5开发经验,对NativeApp、HybridApp、WebApp开发有着独到的见解和深入的研究, 除此之外还精通 JavaScript、AngularJS、 NodeJS 、Ajax、jQuery、Cordova、React Native等多种Web前端技术及Java、PHP等服务端技术。
初学者玩转 TypeScript系列,总计 10 期,本文为第 4 期,点赞、收藏、评论、关注、三连支持!
一期知识点击这里
二期知识点击这里
三期知识点击这里
对于初学者来说,学习编程最害怕的就是,难。
那么,Typescript 是不是很难?
首先,我可以肯定地告诉你,你的焦虑是多余的。新手对学习新技术有很强的排斥心理,主要是因为基础不够扎实,然后自信心不够强。
1.数字枚举和字符串枚举
- TS中支持两种枚举, 一种是数字枚举, 一种是字符串枚举
- 数字枚举
- 默认情况下就是数字枚举
enum Gender{
Male,
Female
}
console.log(Gender.Male);
console.log(Gender.Female);
- 数字枚举注意点
- 数字枚举的取值默认从0开始递增
- 数字枚举的取值可以是字面量, 也可以是常量, 也可以是计算的结果
const num = 666;
function getNum() {
return 888;
}
enum Gender{
Male = getNum(),
Female = 123
}
enum Gender{
Male,
Female
}
console.log(Gender.Male);
console.log(Gender[0]);
enum Gender{
Male = 'www.it666.net',
Female = 'www.itzb.net'
}
console.log(Gender.Male);
console.log(Gender.Female);
- 字符串枚举注意点
- 注意点: 如果使用字符串给前面的枚举值赋值了, 那么后面的枚举值也必须手动赋值
- 注意点: 和数字枚举不一样, 字符串枚举不能使用常量或者计算结果给枚举值赋值
- 注意点: 虽然字符串枚举不能够使用常量或者计算结果给枚举值赋值, 但是它可以使用内部的其它枚举值来赋值
const str = 'lnj';
function getStr() {
return 'abc';
}
enum Gender{
Male = 'www.it666.net',
Female = 'www.itzb.net',
Yao = Female
}
console.log(Gender.Female);
console.log(Gender.Yao);
- 异构枚举
- 枚举中既包含数字又包含字符串, 我们就称之为异构枚举
enum Gender{
Male = 6,
Female = 'nv'
}
console.log(Gender.Male);
console.log(Gender.Female);
console.log(Gender[6]);
console.log(Gender);
2. 枚举成员类型和联合类型
enum Gender{
Male = 'www.it666.com',
Female = 'www.itzb.com'
}
interface TestInterface {
age: Gender.Male
}
class Person implements TestInterface{
age: Gender.Male
}
- 联合枚举类型
- 什么是联合类型?
- 联合类型就是将多种数据类型通过|连接起来
- 我们可以把枚举类型当做一个联合类型来使用
let value:(number | string);
value = 1;
value = 6;
value = "123";
enum Gender{
Male ,
Female
}
interface TestInterface {
age: Gender
}
class Person implements TestInterface{
age: Gender.Female
}
3.运行时和常量枚举
interface TestInterface {
name:string;
age:number;
}
enum Gender{
Male,
Female
}
enum Gender1{
Male,
Female
}
console.log(Gender1.Male === 0);
const enum Gender2{
Male,
Female
}
console.log(Gender2.Male === 0);
4. 类型推论
- 什么是自动类型推断?
- 不用明确告诉编译器具体是什么类型, 编译器就知道是什么类型
let arr = [1, 'a'];
arr = ['a', 'b', 'c', 1, 3, 5, false]
window.onmousedown = (event)=>{
console.log(event.target);
}
5. 类型兼容性
6. 函数兼容性
function add(x:number, y:number):number;
function add(x:string, y:string):string;
function add(x, y) {
return x + y;
}
function sub(x:number, y:number):number;
function sub(x, y) {
return x - y;
}
let fn = sub;
fn = add;
7. 枚举兼容性
8. 类兼容性
9. 泛型兼容性
interface TestInterface<T> {
}
let t1: TestInterface<number>;
let t2: TestInterface<string>;
t1 = t2;
t2 = t1;
码字不易,在线求个三连支持。
大家记得收藏前,先点个赞哦!好的文章值得被更多人看到。
推荐阅读:
13万字C语言保姆级教程2021版
10万字Go语言保姆级教程
2 万字 Jquery 入门教程
3 万字 html +css 入门教程
169集保姆级C语言视频
最后,再多一句,粉丝顺口溜,关注江哥不迷路,带你编程上高速。
版权所有,请勿转载,转载请联系本人授权
|