我正在寻找以下更好的解决方案......我需要这样做:
const FRUIT_PROPERTIES = {
"apple": { color: "red" },
"banana": { color: "yellow" }
} as const
const myFavoriteFruitColor = FRUIT_PROPERTIES.apple.color
Run Code Online (Sandbox Code Playgroud)
这很好,但我也希望 FRUIT_PROPERTIES 对象符合这样的类型:
type FruitEnum = Record<string, { color: string }>
const FRUIT_PROPERTIES: FruitEnum = {
"apple": { color: "red" },
"banana": { color: "yellow" }
} as const
Run Code Online (Sandbox Code Playgroud)
但这样我就失去了“苹果”和“香蕉”键的原始推断类型和自动完成功能。
所以我通过执行以下操作解决了这个问题
type FruitEnum = Record<string, { color: string }>;
const validateFruitEnum = <TParam extends FruitEnum>(param: TParam) => {
return param;
};
const FRUIT_PROPERTIES = validateFruitEnum({
apple: { color: 'red' },
banana: { color: 'yellow' },
} as const)
Run Code Online (Sandbox Code Playgroud)
这样我就保留了原来的类型......
但我想知道是否有更好的方法可以做到这一点?有人有更好的解决方案吗?
归档时间: |
|
查看次数: |
1145 次 |
最近记录: |