03-TypeScript的类型(1)
上一节说了类型声明的语法, 我们接着学习更多的变量类型
字面类型, 举例
let a: "male" | "female" // a的类型只能是male或female, 即 a = "male" // 正确 a = "female" // 正确 a = "hello" // 错误, a不能是除male或female之外的值
any类型, 表示任意类型, 举例
// 显式声明变量为any类型(不建议) let a: any; a = "hello" // 正确 a = 1 // 正确 a = true // 正确 // 隐式声明变量为any类型(不建议) let b; b = 1 b = "hello" b = true
声明变量为any类型, 可以给变量赋任意类型的值。 可以理解为, 声明变量为any类型, 即关闭了编译器对变量类型的检验, 同JavaScript。 使用TS时, 不建议将变量声明为any类型。
unknown类型, 表示未知类型, 类型安全的any, 举例
let a: any a = 1 a = "hello" a = true let b: unknown b = 1 b = "hello" b = true let s: string s = a // 正确 s = b // 错误
unknown类型与any类型的区别
相同点: 声明为unknown类型的变量和声明为any类型的变量, 可以给变量赋任意类型的值
不同点: any类型的变量, 可以赋值给任意类型的变量
unknown类型的变量, 不可以赋值给其他类型的变量
变量s本来是string类型, 变量a赋给s后变成了boolean类型, any类型不仅祸祸自己, 还祸祸其他人。 所以非常不建议把变量声明为any类型。如有需求把unknown变量赋给其他类型变量, 可以这样做
// 第一种, if判断 if(type b === "string") { s = b } // 第二种, 类型断言, 两种用法 s = b as string s = <string>b
void类型, 表示返回值为空, 举例
function fn(): void { console.log("返回值为空") } // 可以返回undefined function fn(): void { return undefined }
never类型, 表示永远不会有返回结果, 也不能返回undefined, 用的很少, 了解即可