请教老师一个泛型的问题,这里为什么不行?
来源:2-21 【讨论题】对 Typescript 初步学习后的印象和困惑
qq_京门_03145109
2021-09-25
替换成(‘name’)就可以正常运行,为什么变量不能直接使用?烦请老师指教
写回答
1回答
-
同学你好 很好的问题,其实看错误你就能发现端倪,这里的 fields 只允许一个联合类型,是字符串字面量的联合类型(name | age),但是 fields 你的类型定义是 string,所以类型不匹配,报错。
如果直接使用 name ,这个字符串本身是一个类型,也就是 'name' 这个类型,属于 'name' | 'age' 类型,所以没问题。
如果你将 let fields: string = 'name'
修改为 const fields = 'name' 你就会发现也能通过,我想其中的原因经过我的解释你也能理解,不理解可以鼠标移动到 fields 上面,看看它是个什么类型。
012021-09-27
相似问题