我正在用TypeScript创建一个简单的逻辑游戏,叫做“犯罪三”。
当尝试在TypeScript中预分配类型化数组时,我尝试这样做:
var arr = Criminal[];
给出了误差 “检查表达式项的格式”。
我也试过这样做
var arr : Criminal = [];
这就产生了“不能将任何[]转化为‘罪犯’”
'TypeScript'是怎么做的?
我正在用TypeScript创建一个简单的逻辑游戏,叫做“犯罪三”。
当尝试在TypeScript中预分配类型化数组时,我尝试这样做:
var arr = Criminal[];
给出了误差 “检查表达式项的格式”。
我也试过这样做
var arr : Criminal = [];
这就产生了“不能将任何[]转化为‘罪犯’”
'TypeScript'是怎么做的?
当前回答
在TypeScript中正确预分配类型化数组的问题有点模糊,因为数组文字语法,所以它不像我最初想象的那么直观。
正确的方法是
var arr : Criminal[] = [];
这将为您提供一个正确键入的空数组,存储在变量'arr'中
其他回答
TLDR:
// explicitly type the variable arr
var arr: Criminal[] = [];
深度:
如果我们有一个没有元素的数组,比如:
var arr = [];
TS没有办法在编译时知道数组中会有什么,并且arr的类型将是:
any[]
然后,程序员的工作就是告诉TS数组的类型,这可以用类型注释来完成:
var arr: Criminal[] = [];
如果我们从数组中取出一个元素Typescript知道这个元素的类型是Criminal。
用于公开访问的用途如下:
public arr: Criminal[] = [];
请试试这个,它对我有用。
return [] as Criminal[];
在TypeScript中正确预分配类型化数组的问题有点模糊,因为数组文字语法,所以它不像我最初想象的那么直观。
正确的方法是
var arr : Criminal[] = [];
这将为您提供一个正确键入的空数组,存储在变量'arr'中
你的语法错了,正确的做法是:
var arr: Criminal[] = [];
我假设你正在使用var,这意味着在func()中声明它,我的建议是使用let而不是var。
如果将其声明为c类属性,则使用访问修饰符,如private, public, protected。