我正在 TypeScript 中创建简单的逻辑游戏,称为“犯罪之三”。
尝试在 TypeScript 中预分配类型化数组时,我尝试执行以下操作:
var arr = Criminal[];
这给出了错误“检查表达式术语的格式”。
也试过这样做
var arr : Criminal = [];
这产生了“无法将任何 [] 转换为 ‘Criminal’
执行此操作的“TypeScript”方法是什么?
原文由 darethas 发布,翻译遵循 CC BY-SA 4.0 许可协议
现有的答案错过了一个选项,所以这里有一个完整的列表:
当变量声明的类型推断失败时,显式指定类型是通用的解决方案。
使用 类型断言(有时称为强制转换,但在 TypeScript 中并不是真正的强制转换)的优势适用于任何表达式,因此即使没有声明变量也可以使用它。类型断言有两种语法,但如果你关心的话,只有后者才能与 JSX 结合使用。
使用 Array 构造函数只会在这个特定用例中对您有所帮助,但我个人认为它最易读。但是,在运行时会有轻微的 性能影响*。此外,如果有人疯狂到重新定义 Array 构造函数, 其含义可能会改变。
这是个人喜好的问题,但我发现第三个选项最易读。在绝大多数情况下,上述缺点可以忽略不计,可读性是最重要的因素。
*: 有趣的事实;在撰写本文时,Chrome 的性能差异为 60%,而 Firefox 则没有可测量的性能差异。