我在TypeScript中创建了一个简单的逻辑游戏,叫做“犯罪三”。
当尝试在TypeScript中预分配类型化数组时,我尝试执行以下操作:
var arr = Criminal[]; 出现错误“检查表达式的格式”。
也尝试这样做
var arr : Criminal = []; 并且产生了“无法将any []转换为'Criminal'
“ TypeScript”执行此操作的方式是什么?
// 1. Explicitly declare the type var arr: Criminal[] = [];
// 2. Via type assertion var arr = <Criminal[]>[]; var arr = [] as Criminal[];
// 3. Using the Array constructor var arr = new Array (); 当变量声明的类型推断失败时,显式指定类型是一般的解决方案。
使用类型断言(有时称为类型转换,但在TypeScript中不是真正的类型转换)的优点适用于任何表达式,因此即使没有声明变量也可以使用它。类型声明有两种语法,但是如果您关心的话,只有后者可以与JSX结合使用。
使用Array构造函数只会帮助您解决此特定用例,但我个人认为这是最易读的。但是,在运行时对性能有轻微影响 *。另外,如果有人疯狂地重新定义Array构造函数,则含义可能会改变。
这是个人喜好问题,但我发现第三个选项最容易理解。在绝大多数情况下,上述缺点可以忽略不计,而可读性是最重要的因素。
*: 有趣的事实; 在撰写本文时,Chrome中的性能差异为60%,而Firefox中没有可测量的性能差异。
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。