联合类型允许一个值有几种可能类型。使用前先判断当前是哪一种,就可以在分支里安全地调用对应操作,这个过程叫类型收窄。

使用 typeof 判断原始类型

format-value.tsTypeScript
function formatValue(value: string | number) {
  if (typeof value === 'number') {
    return value.toFixed(2)
  }

  return value.trim()
}

在 if 分支里,TypeScript 知道 value 是数字;另一个分支里则知道它是字符串。

使用属性判断对象类型

当几个对象类型有不同属性时,可以通过 'key' in value 判断当前分支。对 API 数据仍要保留运行时校验,因为类型声明不会验证服务端实际返回的内容。

小结

先通过条件判断缩小类型,再访问对应属性,是处理表单输入、请求结果和可选值时很常见的写法。