TypeScript 类型设计的几个习惯

让非法状态无法表示

与其用一堆可选字段再加运行时判断,不如用可辨识联合(discriminated union)把状态建模清楚:

type State =
  | { status: 'loading' }
  | { status: 'success'; data: string[] }
  | { status: 'error'; message: string };

这样在 status === 'success' 的分支里,data 一定存在,不需要 ! 或类型断言。

少用 any,多用 unknown

边界处拿到的数据先当 unknown,经过校验后再收窄成具体类型,比一路 any 安全得多。

← 返回文章列表