有没有办法写这个:
foo<T>(bar: ConstructorOf<T>): T
所以这段代码是合法的:
class Baz {}
foo(Baz); // type param T infered to be Baz
答案 0 :(得分:2)
这是你在找什么?
class Baz {
isBaz = true;
}
function foo<T>(c : {new(): T;}): T {
return new c;
}
console.log(foo(Baz).isBaz); // ok
console.log(foo(String).length); // ok
// console.log(foo(String).isBaz); // error: property isBaz does not exist in type String
此代码是https://www.typescriptlang.org/docs/handbook/generics.html中最后一个主题的简化示例。