《Effective TypeScript 》-- 条款9: 优先使用类型声明而非类型断言

70 阅读1分钟

条款9: 优先使用类型声明而非类型断言

笔者认为 TS 似乎有两种方式为一个变量进行类型的约定,这个似乎尤其精妙,他可以更大胆一些:

  • 第一种方式是通过 : ,该符号后面跟一个类型,作用是为变量声明一个类型;
  • 第二种方式是通过断言 const a = {} as Person; 通过断言的方式为变量赋值类型;

笔者认为需要优先试用类型声明,有以下几个优点:

  1. 类型声明时,能够提示相应的报错或对额外属性进行判定;而使用类型断言时无法进行错误提示;
  2. 类型断言存在局限性:无法在任意两个类型之间进行转换,仅支持在 A 是 B 的子集情况下,才能够将 A 类型断言成B类型。如果要进行任意的转换需要先将 A => unknown => B,通过 unknown 类型作为桥梁;

那什么时候需要使用断言:

  1. 当我们比 TS 更明白我们的代码的时候,可以使用断言进行操作;
  2. 当我们知道不需要都判定空集时,可以使用 !来进行断言;可以在确保非空的前提下使用它;