在一些库中,我经常看到类似这样的 TS 语法:
type AriaRole = 'alert' | 'tree' | 'treegrid' | 'treeitem' | (string & {});
Run Code Online (Sandbox Code Playgroud)
是什么意思string & {}?
它是与对象相交的字符串。
这有意义还是可能是黑客行为?
看起来很奇怪,因为这种类型基本上是string.
但如果你这样写'alert' | 'tree' | 'treegrid' | 'treeitem' | string,那么你的类型将被简化为string. 这意味着如果您开始编写这段代码:
let role: AriaRole = 'a
Run Code Online (Sandbox Code Playgroud)
那么您不一定会得到有用的自动完成建议。就 Typescript 而言,您AriaRole只需string编写任何字符串,Typescript 就不会知道这些特定的字符串是否值得建议。
但是用 编写string & {},它不会被简化为string,因此整个联合不会被简化,结果是您会得到 等的自动完成建议'alert','tree'同时还允许任何其他字符串值。
因此,我认为以这种方式编写类型的原因是拥有一个允许每个字符串的类型,但自动完成建议“鼓励”某些字符串。这也意味着当您将鼠标悬停在类型名称上时,您可以看到那些“鼓励”字符串。
| 归档时间: |
|
| 查看次数: |
643 次 |
| 最近记录: |