且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

TypeScript 里的 unknown 和 never

更新时间:2021-09-08 17:15:46

unknown 和 any 类似,但前者类型安全。


未知类型代表任何值。 这类似于 any 类型,但更安全,因为使用未知值做任何事情都是不合法的:


function f1(a: any) {
  a.b(); // OK
}
function f2(a: unknown) {
  a.b();
}

TypeScript 里的 unknown 和 never


如果一个函数返回类型为 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);

TypeScript 里的 unknown 和 nevernever

下列函数,绝不会返回任何数据,故用 never 修饰其返回值:


function fail(msg: string): never {
  throw new Error(msg);
}

never 类型表示从未观察到的值。 在返回类型中,这意味着函数抛出异常或终止程序的执行。

84