TypeScript 里的 unknown 和 never
2021-08-07 本文已影响0人
华山令狐冲
unknown 和 any 类似,但前者类型安全。
未知类型代表任何值。 这类似于 any 类型,但更安全,因为使用未知值做任何事情都是不合法的:
function f1(a: any) {
a.b(); // OK
}
function f2(a: unknown) {
a.b();
}

如果一个函数返回类型为 unknown,那我们无法再对其进行访问其实例方法或者属性的操作:
function safeParse(s: string): unknown {
return JSON.parse(s);
}
// Need to be careful with 'obj'!
const obj = safeParse('{"data": 1234}');
console.log(obj);
console.log(obj.data);

never
下列函数,绝不会返回任何数据,故用 never 修饰其返回值:
function fail(msg: string): never {
throw new Error(msg);
}
never 类型表示从未观察到的值。 在返回类型中,这意味着函数抛出异常或终止程序的执行。
更多Jerry的原创文章,尽在:"汪子熙":
