包含对象的TypeScript类型数组

时间:2017-07-14 12:11:01

标签: arrays typescript

我在TypeScript中编写了以下setter:

public set data(data: Array<Data>) {
  console.log(data[0].getterProperty);
  console.log(data[0] instanceof Data);
  console.log(typeof data[0]);
  this.setGridDataIfReady();
}

假设data包含一个项目,则打印

undefined
false
object

为什么会这样?不应该只是Data类型的对象在数组中,如果我这样指定它吗?

1 个答案:

答案 0 :(得分:1)

值得注意的是,Typescript不是一种可执行语言,它转化为JavaScript。这意味着在运行时您运行的是JavaScript而不是Typescript。因此,有时你会得到奇怪的行为。

确实,您将数组的类型设置为&#34; Data&#34;,但是当编译Typescript时,运行时类型只是&#34; Object&#34;。这不像Java那样传入不正确的类型会抛出异常。不要期望Typescript类型来防止任何运行时错误。

如果您想实际捕获类型并且如果数组条目不是类型&#34;数据&#34;则失败,请确保所有条目都是使用&#34; new Data&#34;创建的。这将设置对象的构造函数并使&#34; instanceof Data&#34;返回true。