上一篇如何理解 TS 中的静态类型检查 讲解了 TS 的核心作用,这篇我们从 TS 类型说起。
TS 中的类型由三部分组成,JS 中原有的类型,TS 扩展的类型,以及新增加的函数返回类型。
JS 中原有的类型
Undefined,Null,Boolean,Number,String,Array
// undefined 和 null 经常以联合类型和其他类型搭配使用
// 联合类型表示或的关系多个关系中的一种
// num 可以是一个数字,也可以是一个 undefined 此处就是初始 num undefined 的类型
// 如果此时只给 number 类型就会类型检查报错
let num: number | undefined | null ;
let isSwitch: boolean = true;
let str:string = 'liuliuqi';
// 表示数组的每个成员都是 number
// 如果数组的成员既要是 number 也要是 string 的时候应该要怎么定义?
let arrNumber:number[] = [1, 2, 3];
细心的朋友可能会发现,我们没有提及 Object 类型。官网上对 Object 类型解释如下:
objectis a type that represents the non-primitive type, i.e. anything that is notnumber,string,boolean,bigint,symbol,null, orundefined. Withobjecttype, APIs likeObject.createcan be better represented. Generally, you won’t need to use this.
object 是代表非基本类型的类型,即不是数字,字符串,布尔值,bigint,symbol,null或undefined的任何类型。使用对象类型,可以更好地表示Object.create之类的API。通常,你不需要使用它。
interface ObjectConstructor {
create(o: object | null): any;
setPrototypeOf(o: any, proto: object | null): any;
}
Object 原型链上的方法 create / setPrototypeOf 等方法的入参数类型限制为 object
TS 中扩展的类型
Enum, Any,Tuple(元组)
// 定义了枚举类型 Color
// 如果未赋值,默认的值为索引,从 0 开始
// 如果某个子项赋值,则以此子项为基础往后递增的索引
enum Color {
Red,
Green,
Blue,
}
enum ColorTwo {
Red = 3,
Green,
Blue,
}
let c: Color = Color.Green;
let c2: ColorTwo = Color.Green;
console,log(c) // 1
console,log(c2) // 4
// Any 表示是任意类型
let liuliuqi:any;
liuliuqi = 18;
liuliuqi = 'qbc';
liuliuqi = false;
前面提到如果数组的成员既要是 number 也要是 string 的时候应该要怎么定义?元组就是解决这个问题的。
元组是对数组的拓展,表示已知元素数量和类型的数组
let arrStrNumber:[string, number] = ['liuliuqi', 18];
TS 中函数返回类型
Void, Never
// void 表示不返回类型 通常作为不会值的函数返回类型
function handle():void {
console,log('void no return');
}
// never 表示永不出现的值的类型。通常用在异常抛出函数中
function error(message: string): never {
throw new Error(message);
}
以上就是 TS 中涉及的类型。
下一篇写:如何理解 TS 中的接口
「 一枚前端学习小透明,努力学习前端知识中,同时分享自己对生活的一些思考,欢迎一起讨论交流。如果我的文章对你有帮助,请点个赞,会非常感恩你的鼓励。完」