TS中 any 和 unknown 的区别

76 阅读1分钟

// 交叉类型
// let a:number&string; // 不会有任何值能满足这个类型,一般不会这么写。
// 如果一个属性出现多次类型的设置,需要都满足

let obj:{name:string,age:number} & {height:number,age:18}; // & 都 必须有name,age,height属性,都存在
obj = {name:'zhangsan',age:18,height:1.80}

不推荐使用any,any绕过类型校验

// 不写any类型时,和写any是有区别的
// 值类型是变量类型
let a:any = 1
a = '10'
a = [10]
a = { b:10 }
a.toFixed(2)

let n:unknown
n = 1
n = 10 
n = [10]
n.toFixed(2) // 报错,有做类型校验,除非上面写number 才不会有报错

if (typeof n === 'number'){
    n.toFixed(2)
} else if (typeof n === 'string) {
    n.concat()
}