打字稿可空数组

时间:2014-02-17 16:43:26

标签: typescript

我正在测试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:对不起我的英语,我不是母语人士。

1 个答案:

答案 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]
];