为啥ts报错Type 'number' is not assignable to type '3' ?

作者站长头像
站长
· 阅读数 13

为啥ts报错Type 'number' is not assignable to type '3' ?小白初学ts 有些迷糊1.这个类型这么写为什么会报错 2.type3 是个什么类型 为什么能传3。泛型不是传个类型吗。传number/string这种类型能理解,为什么还能传个具体值?3.就按这种思路能实现这个类型吗

回复
1个回答
avatar
test
2024-07-10
  1. as const 一下即可

    const T: toFixLengthTuple<string, 3> = ['a', 'b', 'c'] as const
  2. 3 这个也是类型,TS 里面字面量可以作为类型的。

    type version = 1 | 2

    还有字符串字面量类型也很常用:

    type State = 'succeeded' | 'failed' | 'pending' | 'timeout'
    let state: State = 'pending' // 这里就有代码补全了
    // ...
    switch (state) {
       case: 'succeeded': // ... 这也有补全,而且可以类型收窄
    }
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容