gpt4 book ai didi

TypeScript:不能将 'new' 与类型缺少调用或构造签名的表达式一起使用

转载 作者:搜寻专家 更新时间:2023-10-30 20:32:24 24 4
gpt4 key购买 nike

我有一个函数,它使用给定的构造函数实例化一个对象,并传递任何参数。

function instantiate(ctor:Function):any {
switch (arguments.length) {
case 1:
return new ctor();
case 2:
return new ctor(arguments[1]);
case 3:
return new ctor(arguments[1], arguments[2]);
...
default:
throw new Error('"instantiate" called with too many arguments.');
}
}

它是这样使用的:

export class Thing {
constructor() { ... }
}

var thing = instantiate(Thing);

这行得通,但编译器会提示每个 new ctor 实例,说 Cannot use 'new' with an expression which type lacks a call or construct signature.ctor 应该有什么类型?

最佳答案

我会这样写(使用泛型作为奖励):

function instantiate<T>(ctor: { new(...args: any[]): T }): T {

关于TypeScript:不能将 'new' 与类型缺少调用或构造签名的表达式一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31224392/

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