泛型和TypeScript中的文字类

时间:2018-10-15 21:57:20

标签: typescript

在Java中,我们可以执行以下操作:

Map<Class<?>, Integer> countsByClass;
...
countsByClass.put(String.class, 1);

如何在TypeScript(或类似的东西)中做同样的事情?

let countsByClass: Map<???, Number>;
...
countsByClass.put(???, 1);

2 个答案:

答案 0 :(得分:3)

请执行以下操作:

class Foo {}

let countsByClass: Map<new (...args: any[]) => any, number> = new Map();
countsByClass.set(Foo, 5);

console.log(countsByClass.get(Foo));

还可以定义中间Class类型:

type Class<T = any> = new (...args: any[]) => T;

,然后Map声明变得更简洁:

let countsByClass: Map<Class, number> = new Map();

Stackblitz demo

答案 1 :(得分:0)

我认为您的意思是为类提供通用类型。当然,如果需要,您可以提供多种类型。

示例:

class Map<T, U> { }

如果我错了,请纠正我。