不能在TypeScript中使用“函数”类型的“new”

时间:2017-07-08 17:04:19

标签: typescript

我有这段代码:

const BlockConstructors: Function[] = [
 OBlock,
 IBlock,
 TBlock
];

function randomFromArray(array: any[]) {
  return array[Math.floor( Math.random() * array.length )];
}

const BlockConstructor: Function = random(BlockConstructors);
const block: Block = new BlockConstructor();

我尝试从数组中绘制一个块构造函数,然后创建一个新对象,数组中的所有块构造函数都扩展了Block类。我收到错误:

  

不能对类型缺少调用或构造签名的表达式使用“new”。

为什么会出现此错误?

1 个答案:

答案 0 :(得分:1)

您的代码不是自包含的,但这是简单的原因。

Function不是new - 能够的。 TypeScript中只有三件事可以是new

  1. 带有构造签名的类型
  2. 没有构造签名的类型,但调用签名返回void
  3. any
  4. 你真的想要第一个。

    尝试从Function切换到(new () => Block)