gpt4 book ai didi

typescript - TypeScript 中的函数类型不能使用 'new'

转载 作者:行者123 更新时间:2023-12-04 03:05:29 33 4
gpt4 key购买 nike

我有这个代码:

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 构造函数,然后创建一个新对象,数组中的所有 block 构造函数都扩展了 Block 类。我得到错误:

Cannot use 'new' with an expression whose type lacks a call or construct signature.

为什么会出现这个错误?

最佳答案

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

Function 不是 new-able。在 TypeScript 中只能new'd 三个东西:

  1. 带有 construct 签名的类型
  2. 没有构造签名但带有返回 void
  3. call 签名的类型
  4. 任何

你真的想要第一个。

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

关于typescript - TypeScript 中的函数类型不能使用 'new',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44988702/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com