我需要存储一个类型变量,以便以后动态实例化它。现在我找不到如何声明类型Type的变量,并且由于语言名称而很难搜索。但是从我发现的结果来看,它没有任何意义,应该使用任何东西,但我不希望这样做。
简单的例子:
class Foo {}
function test(bar: ???|any) {...}
test(Foo); // just the type not an instance
答案 0 :(得分:3)
Foo
不能 作为类型¹传递。当您执行test(Foo)
时,您确实传递了一个构造函数(即值而不是类型),并且该构造函数返回类型为Foo
的对象(此处均引用值和类型)。正确的类型应该是Foo
变量的类型,而不是Foo
的类型(是的,那有点令人困惑²):
function test(bar: typeof Foo) { /*...*/ }
或更明确地说,您也可以直接将其作为Foo构造函数键入:
function test(bar: { new(): Foo; }) { /*...*/ }
¹注意:您不能传递类型,因为在代码运行时它们不存在,所以类型仅在编译时存在,而在运行时不存在。
²可能更清楚地说明一个例子:
// v the type v the value
const value: Foo = new Foo();