窄(字面量类型/更精确)- const更窄

0 阅读1分钟

窄(字面量类型 / 更精确)

  • 含义:保留更具体的类型信息(“它就是这个值”)。
  • 例子:
  • 'ok' 还是 'ok'
  • 1 还是 1
const s = 'ok' // s: 'ok'(更窄、更精确)
const n = 1    // n: 1

为什么 const 更窄:因为 const 不能改值,TS 就敢把它推得更精确。

补充:“运行中窄化”

当一个变量是联合类型时,通过判断把它“缩小到某一支”,也叫类型收窄(narrowing):

function f(x: string | number) {
  if (typeof x === 'string') {
    // 这里 x 被收窄成 string
    x.toUpperCase()
  } else {
    // 这里 x 被收窄成 number
    x.toFixed(2)
  }
}

一句话总结

  • 宽化:更通用('a' → string)
  • 窄(字面量):更精确('a' → 'a')
  • 收窄:在代码分支里把联合类型缩小(string | number → string)