unknown,一个神奇的类型,有点像any,但是又不太一样,用官网的说法就是:
The unknown type represents any value. This is similar to the any type, but is safer because it’s not legal to do anything with an unknown value.
翻译成大白话的意思就是:unknown类型代表任何类型,它的定义和any定义很像,但是它是一个安全类型,使用unknown做任何事情都是不合法的。举个例子和any的区别就是:
function unknownFunction(param: unknown) {
const a = param + 1;
}
function anyFunction(param: any) {
const a = param + 1;
}
此时,类型检测会提示
所以unknown并没有放弃类型检测,它还是会要求你断言为具体类型,然而any不会,所以正确使用unknown的方式是:
function unknownFunction(param: unknown) {
const a = param as string + 1;
}
function anyFunction(param: any) {
const a = param + 1;
}
完美通过类型检测
当然这种方式并不是最好的,我们应该通过类型收缩来变成具体类型,然后再进行操作,所以实际上应该这么用:
function unknownFunction(param: unknown) {
if(typeof param === 'string') {
return 1 + param;
} else if(param ==='number') {
return 2 + param;
}
}
所以,如果可以,尽量使用unknown类型,不然any用多了就成了anyscript。