这是一个有效的打字稿片段:
class A{
}
// what is the type of x ? i.e. f( x: <TYPE HERE>)...
function f(x) {
return new x();
}
const t = f(A);
很明显,x的类型是构造函数的类型,但我不清楚如何在Typescript中指定它。
是否可以输入参数x?
如果是,那是什么类型?
答案 0 :(得分:3)
您可以使用:
interface Newable<T> {
new (): T;
}
如下:
class A {}
interface Newable<T> {
new (): T;
}
function f(x: Newable<A>) {
return new x();
}
const t = f(A);
如果你想允许构造函数参数,你需要输入它们:
class A {
constructor(someArg1: string, someArg2: number) {
// ...
}
}
interface Newable<T> {
new (someArg1: string, someArg2: number): T;
}
function f(x: Newable<A>) {
return new x("someVal", 5);
}
const t = f(A);
如果需要,您还可以做一些更通用的事情:
interface Newable<T> {
new (...args: any[]): T;
}