// strict 为 true 的情况下,声明 undefined和 null 类型只能将他们赋值给自身
let isUndefined: undefined = undefined
let isNull: null = null
// 如果一定要使用的初始值为空的话, 可以使用联合类型
let str: string | null
str = '1'
// void 一般 用来表示一个没有返回值的函数返回类型
function log(msg: string):void {}
两个神秘类型
any
// any 官方提供的一个可绕过静态类型检查的作弊方式, js项目迁移到 ts 项目时,针对不确定的类型,
// 我们即可 使用 any 来定义类型, 需要注意的是, 定义为 any 类型后, 变量将失去类型检查的能力,
// 所以不在万不得以的情 况下我们最好不要用 any
function log(msg: any) {
return {} + msg
} // 不报错
unknown
TypeScript 3.0中引入的 unknown 类型,但它更安全。与 any 一样,所有类型都可以分配给unknown。
不同的是 unknown 类型的变量只能赋值给 any 和 unknown
let isUnknown: unknown = 1
let isNumber: number = isUnknown // 不能将类型“unknown”分配给类型“number”。ts(2322)
let isAny: any = isUnknown // ok