简介
- 本章介绍
viod
、null
、undefined
、never
和object
这五种数据类型
void
-
某种程度上来说,
void
类型像是与any
类型相反,它表示没有任何类型,当一个函数没有返回值时,你通常会见到其返回值是viod类型// 通过这样就可以很明确的表示该函数没有返回值 function test():void { console.log("hello world"); } test();
-
声明一个
void
类型的变量没有什么大用,因为你只能为它赋予undefined
和null
,"strict": false
// 需要关闭ts配置文件的严格模式strict let value1:void; let value2:void; let value3:void; value1 = 1; // 报错 value2 = undefined; value3 = null;
null和undefined
默认情况下
null
和undefined
是所有类型的子类型,就是说你可以把null
和undefined
赋值给number
类型等的变量。-
当你指定了
--strictNullChecks
标记,null
和undefined
只能赋值给void
和它们各自,这能避免很多常见的问题。也许在某处你想传入一个string
或null
或undefined
,你可以使用联合类型string | null | undefined
。let value1:number; let value2:string; value1 = null; value2 = undefined;
never
-
never
类型表示的是那些永不存在的值的类型, 例如never
类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型;function demo():never { throw new Error('报错了') } demo();
-
变量也可能是
never
类型,当它们被永不为真的类型保护所约束时function infiniteLoop(): never { while (true) { } }
never
类型是任何类型的子类型,也可以赋值给任何类型;然而没有类型是never
的子类型或可以赋值给never
类型(除了never
本身之外)。即使any
也不可以赋值给never
。
object
-
只能保存对象的数据类型
let obj:object obj = 1; // 报错 obj = "123"; // 报错 obj = true; // 报错 obj = { name:'lnj', age:33 }; console.log(obj);