视频位置 TypeScript快速梳理_上篇 37:23
unknown 的含义是:未知类型
1. unknown 可以理解为⼀个类型安全的 any
适⽤于:起初不确定数据的具体类型,要后期才能确定。
// 设置a的类型为unknown
let a: unknown
//以下对a的赋值,均符合规范
a = 100
a = false
a = '你好'
//unknown 和 any 的不同就体现在这里: unknown 给其它类型赋值时有警告。
// 设置x的数据类型为string
let x: string
x = a //警告:不能将类型“unknown”分配给类型“string
//如果想让此时 x=a 成功执行,可以用下面的3种手段(让ts放心)来解决。
//第⼀种手段:加 类型判断
if(typeof a === 'string'){
x = a
console.log(x)
}
//第⼆种手段:加 断⾔(断言的第1种写法)
x = a as string
//第三种手段:加 断⾔(断言的第2种写法)
x = <string>a
2. 读取 any 类型数据的 任何属性 都不会 报错,⽽ 读取 unknown 类型数据的 任何属性 都会 报错。
let str1: string
str1 = 'hello'
str1.toUpperCase() //⽆警告
let str2: any
str2 = 'hello'
str2.toUpperCase() //⽆警告
let str3: unknown
str3 = 'hello';
str3.toUpperCase() //警告:“str3”的类型为“未知”
// 使⽤ 断⾔ 强制指定 str3的类型为string
(str3 as string).toUpperCase() //⽆警告
