Vitaminaq / interview-collection

前端面试合集
3 stars 0 forks source link

ts类型any与unknow的区别 #24

Open Vitaminaq opened 2 years ago

Vitaminaq commented 2 years ago

相同点:任何类型的值都可以赋值给它们。

不同点:
两者从字面意思记忆非常好区分。

any:任意类型。所谓万能卡,直接放弃治疗了,犹如写js,不会有任何类型的校验。 unknow:未知类型。有类型,只是不确定而已,而确定这件事就需要劳烦你去搞定了。

通过下面几个例子可以很简单的发现:

let a: any = '';

a.test; // 不报错
a = {}; // 不报错

let b: unknown = '';

b.test; // 报错:类型“unknown”上不存在属性“test”。
b = {}; // 不报错。

b.length; // 报错:类型“unknown”上不存在属性“length”。
if (typeof b === 'string') {
    console.log(b.length); // 不报错
}