4.3. unknown
<p><code>unknown</code> 的含义是:未知类型。
备注1:<code>unknown</code> 可以理解为⼀个类型安全的a ny
备注2:<code>unknown</code> 适⽤于:开始不知道数据的具体类型,后期才能确定数据的类型</p>
<pre><code>// 设置a的类型为unknown
let a: unknown
//以下对a的赋值,均正常
a = 100
a = false
a = '你好'
// 设置x的数据类型为string
let x: string
x = a //警告:不能将类型“unknown”分配给类型“string”</code></pre>
<p>若就是想把<code>a</code> 赋值给<code>x</code> ,可以⽤以下三种写法:</p>
<pre><code>// 设置a的类型为unknown
let a: unknown
a = 'hello'
//第⼀种⽅式:加类型判断
if(typeof a === 'string'){
x = a
}
//第⼆种⽅式:加断⾔
x = a as string
//第三种⽅式:加断⾔
x = &lt;string&gt;a</code></pre>
<p><code>any</code> 后点任何的东⻄都不会报错,⽽ <code>unknown</code> 正好与之相反。</p>
<pre><code>let str1: string = 'hello'
str1.toUpperCase() //⽆警告
let str2: any = 'hello'
str2.toUpperCase() //⽆警告
let str3: unknown = 'hello';
str3.toUpperCase() //警告:“str3”的类型为“未知”
// 使⽤断⾔强制指定str3的类型为string
(str3 as string).toUpperCase() //⽆警告</code></pre>