我正在测试Typescript,我遇到了Array,interface和nullable变量的麻烦:
我有这个界面:
interface Entity {
life: number;
type: EntityType;
}
我有这个属性:
world: Entity[];
我正在尝试初始化:
this.world = [
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null]
];
编译告诉我:
无法将{} []转换为实体[]
这可能吗?我做错了什么。
提前致谢!
PS:对不起我的英语,我不是母语人士。
答案 0 :(得分:3)
这里发生的是TypeScript推断赋值的类型,并且因为数组中的所有条目都为null,所以推断出{}[][]
的类型。 {}[][]
无法分配Entity[][]
,因此这是编译错误。
您可以使用 cast 类型断言来编译代码。你的代码中还有一个错误,你已经定义了一个数组数组(2D),但world
被声明为一维数组。我假设你想要一个2D数组。
var world: Entity[][];
world = <Entity[][]>[
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null]
];