我试图在枚举上使用mapped type:
export enum CurrencyType {
USD = "USD",
AUD = "AUD",
GBP = "GBP",
CAD = "CAD"
}
实现这种类型:
type Rates = {
AUD: number;
CAD: number;
GBP: number;
USD: number;
}
我以为我可以这样做:
type Rates = {
[P in keyof CurrencyType]: number;
};
但这导致了这一点:
type Rates = {
toString: number;
charAt: number;
charCodeAt: number;
concat: number;
indexOf: number;
lastIndexOf: number;
localeCompare: number;
match: number;
replace: number;
//...
}
我尝试使用union literals
代替enum
,
export type CurrencyType = "USD" | "AUD" | "GBP" | "CAD";`
但它给出了相同的结果。
我唯一可以开始工作的是:
type Rates = {
[P in typeof CurrencyType.AUD | CurrencyType.USD | CurrencyType.GBP | CurrencyType.CAD]: number;
};
但是很明显,这会打败整个目的!
有没有这样做?
答案 0 :(得分:5)
type Rate = {
[P in CurrencyType]: number;
};
如果有人帮助别人,我会把它留下来