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

Stw*_*sch 3 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();
Run Code Online (Sandbox Code Playgroud)

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

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

为什么会出现这个错误?

Dan*_*ser 5

您的代码不是独立的,但这是归结起来的原因。

Function不能newnew在 TypeScript 中只能做三件事:

  1. 具有构造签名的类型
  2. 没有构造签名但具有返回的调用签名的类型void
  3. any

你真的想要第一个。

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