我有一個映射,其鍵是類,它們的值是這些相應類的實體。
// JavaScript code
class A {};
class B {};
const map = new Map();
map.set(A, new A);
map.set(B, new B);
如何在打字稿中正確鍵入提示此地圖?
uj5u.com熱心網友回復:
您將需要自定義地圖定義,因為標準地圖定義也希望鍵具有相同的型別和值,而且不允許在兩者之間設定任何關系。
所以它可能是這樣的:
type Constructor = new (...args: any) => any;
interface ConstructorMap {
clear(): void;
delete(key: Constructor): boolean;
get<K extends Constructor>(key: K): InstanceType<K> | undefined;
has(key: Constructor): boolean;
set<K extends Constructor>(key: K, value: InstanceType<K>): this;
readonly size: number;
}
class A { a = '' };
class B { b = 1 };
const map: ConstructorMap = new Map();
map.set(A, new A);
map.set(B, new B);
const a = map.get(A) // A | undefined
// Expect error: Argument of type 'B' is not assignable to parameter of type 'A'
map.set(A, new B);
操場
檔案上的InstanceType<Type>效用
uj5u.com熱心網友回復:
給你(檔案,有點):
const map = new Map<typeof A | typeof B, A | B>();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/368168.html
