背景:const variable with inferred type
的意思是
const c = 1 // this
const c:1 = 1 // not this
const c = 1 as const // not this
related
所以我试图缩小这种变量的类型,这是我的尝试:
不起作用
不起作用
export const Narrow=<T extends any>(v:T extends never ? T: T extends never ? T : T)=>{
//
}
const c=1
Narrow(c)
这个很有效,看起来很奇怪,但它确实起作用了
Playground
所以我问题是:
1.为什么?
1.有更简单的解决办法吗
1.有更好的解决办法吗?
1条答案
按热度按时间jjjwad0x1#
现在TypeScript 5.0引入了
const
泛型,解决了这个问题。有关更多信息,请参阅this pull request和the relevant issue。有了这个,Narrow
的定义现在看起来像这与我在评论中展示的
Narrow
类型的行为类似:除了它将所有内容都推断为只读,就好像您真的用
您可以使用下面的两个playground链接比较5.0之前的方法和5.0 const泛型:
const
泛型