我需要这样一个特性,如Java中的Class for TypeScript,但我一直无法找到它。Class<T>
是我要找的。我想它可能是NewableFunction<T>
。但是没有这样的东西。我不能用Map<A, InstanceType<A>>
,显然它不正确。
“setIt”方法和“left end of this Map”只传递类A的类型和类A的子类,而不传递其示例或不是A子类的类。
我知道Typescript编译为Javascript时会擦除类型,就像Java一样。
class Foo {
public static readonly bar : Map<Class<A>, A>;
public static declare getIt(clazz: Class<A>) : A;
public static setIt(clazz: Class<A>) : A {
const a = new clazz();
this.bar.set(clazz, a);
return a;
}
}
declare class A;
declare class B extends A;
字典的左边是它的类,右边是对应类的对象。
还有协变和逆变类的声明呢?
如“进”和“出”是Kotlin的关键词。
我也在找那个。
class Foo{
public map: Map<Class<in A>, A>
public setIt(clazz: Class<in A>): A;
}
我搜索了它,也看了官方文档,包括stdlib的类型声明,但没有得到任何结果。
1条答案
按热度按时间zfycwa2u1#
关于你的第一个问题,是的。如果你用
那么你有两件事:实际的
A
,它是一个构造函数(一种函数),以及类型A
,它类型化了A* 的 * 示例。但是,您可以使用**
typeof A
**获得构造函数的类型(存储在A
中的实际内容)。在您的示例中,转换为TypeScript,您将获得:
我将类Foo转换为一个基本对象,因为它只有静态属性,在TypeScript中作为类没有意义。