开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
前言
这两年TS越来越火,各大UI、框架都兼容了TS,说不定将来某一天浏览器都能支持TS。TS方便了代码的维护,极大地提升了代码的可读性。如果还没学习TS的话,就得赶紧学习。TS对JS而言,最主要的区别就是增加了类型标注,今天我们就来看一下,TS的基础类型。
基础类型
- 数字。变量名后面加上number表示数字。
const num: number = 2;
- 布尔。变量名后面加上boolean表示布尔。
const flag: boolean = false;
- 字符串。变量名后面加上string表示字符串。
const str: string = '123';
- null。后面加null表示null,同理加上undefined表示undefined。
const a: null = null;
const b: undefined = undefined;
到此感觉TS就是把JS的基本数据类型描述了一下,接下来就有所不同啦。
- 数组。数组可以用数据类型+[ ],如number[ ];还可以用Array<number>,这是泛型的写法。我们其实是对数组的元素做了类型限制,当数组为number[],元素如果为sting会报错。
- 元组Tuple。由多种类型的组成的数组,[类型1,类型2,...]。数组里面的每个元素要跟元组的每个类型对应。
const arr: [number,string] = [1, '2'];
- object。表示除了原始类型的所有类型。也就是不能表示基本数据类型。
const obj: object = {
age: 25
};
- enum。表示枚举类型。一般用来将变量跟数字对应起来。默认是从0开始,我们可以将第一位设置起始值,后面会跟着起始值编号。
enum fruit{
apple,
banana,
cherry
}
enum animal{
pig = 3,
bird
}
console.log(fruit.apple)//0
console.log(animal.bird)//4
- void。表示没有任何类型。如果一个函数值没有返回值时,会返回void。对应void只能赋值undefined。
const c :void = undefined
- nerver。表示不存在的类型。一般表示函数返回值,比如抛出异常,箭头函数等。
function error(): never {
throw new Error('发生错误了');
}
- any。跟void相反,它表示任何类型。大家可能听说过,TS用any跟JS没区别,如果大部分都用了any还不如不用。刚开始确实不用any感觉写不出来,但是我们还是要慢慢克服,少用any。any越用越少表示我们TS也越来越精湛。 以上就是TS的基础类型,那么还有一个知识点就是类型断言,上面我们数组的表示都用到了。类型断言相当于把变量当成了断言的类型,告诉TS这个变量就是这种类型,不需要再检查了。类型断言有两种方式:
- as写法。变量名+as+类型。
- <>写法。<类型>+变量名
const str:any = '123'
const str1 = str as string //str1就是string类型,不断言会当成any
const str2 = <string>str //str2也是string类型
总结
以上就是ts的基础类型,刚开始不要害怕用any,当然用了之后要想办法把any变成具体的类型。TS也是一门积累的学问。