NSj*_*nas 1 typescript mapped-types
我试图在枚举上使用映射类型:
export enum CurrencyType {
USD = "USD",
AUD = "AUD",
GBP = "GBP",
CAD = "CAD"
}
Run Code Online (Sandbox Code Playgroud)
实现这种类型:
type Rates = {
AUD: number;
CAD: number;
GBP: number;
USD: number;
}
Run Code Online (Sandbox Code Playgroud)
我以为我可以做这样的事情:
type Rates = {
[P in keyof CurrencyType]: number;
};
Run Code Online (Sandbox Code Playgroud)
但是结果是这样的:
type Rates = {
toString: number;
charAt: number;
charCodeAt: number;
concat: number;
indexOf: number;
lastIndexOf: number;
localeCompare: number;
match: number;
replace: number;
//...
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用union literals
替代enum
,
export type CurrencyType = "USD" | "AUD" | "GBP" | "CAD";`
Run Code Online (Sandbox Code Playgroud)
但结果相同。
我唯一可以开始工作的就是这样做:
type Rates = {
[P in typeof CurrencyType.AUD | CurrencyType.USD | CurrencyType.GBP | CurrencyType.CAD]: number;
};
Run Code Online (Sandbox Code Playgroud)
但这显然不能达到目的!
反正有这样做吗?
哇,它就在我面前。和往常一样,我过于繁琐,没有彻底阅读文档。
type Rate = {
[P in CurrencyType]: number;
};
Run Code Online (Sandbox Code Playgroud)
如果有其他人帮忙,我会保留
归档时间: |
|
查看次数: |
792 次 |
最近记录: |