Typescript 如何定义类型,以便能够将具有通用字符串键的记录分配给自定义枚举键
我的应用程序接收已知标志(基本上是键值对象)的数据,但我只对这些标志的子集感兴趣。我想写一个类型,它不仅是像Typescript 如何定义类型,以便能够将具有通用字符串键的记录分配给自定义枚举键,typescript,Typescript,我的应用程序接收已知标志(基本上是键值对象)的数据,但我只对这些标志的子集感兴趣。我想写一个类型,它不仅是像Record这样的记录,而且我希望每个标志都由enum标识。我是这样开始的: interface FlagsDataModel< T extends Record<string, FlagDataModel> = Record<string, FlagDataModel> > { flags?: T; } interface FlagD
Record
这样的记录,而且我希望每个标志都由enum
标识。我是这样开始的:
interface FlagsDataModel<
T extends Record<string, FlagDataModel> = Record<string, FlagDataModel>
> {
flags?: T;
}
interface FlagDataModel<T = boolean> {
value: T;
}
API可能会返回这样的数据,但我只对其中的子集感兴趣:
// mock
const genericFlagsData: FlagsDataModel = {
flags: {
'custom-foo': { value: true },
'custom-bar': { value: true },
'custom-foobar': { value: true },
'custom-barfoo': { value: true }
}
};
最后,我想将这些APIgenericFlagsData
分配给我的customFlagsData
,并使用enum
值作为键访问数据:
const customFlagsData: CustomFlagsDataModel = genericFlagsData; // Error occurs
console.log(customFlagsData[CustomNames.BAR]) // <-- should log { value: true }
const customFlagsData:CustomFlagsDataModel=genericFlagsData;//发生错误
console.log(customFlagsData[CustomNames.BAR])//
const customFlagsData: CustomFlagsDataModel = genericFlagsData; // Error occurs
console.log(customFlagsData[CustomNames.BAR]) // <-- should log { value: true }
Type 'FlagsDataModel<Record<string, FlagDataModel<boolean>>>' is not assignable to type 'CustomFlagsDataModel'. Type 'Record<string, FlagDataModel<boolean>>' is missing the following properties from type '{ "custom-bar": FlagDataModel<boolean>; "custom-foo": FlagDataModel<boolean>; }': [CustomNames.BAR], [CustomNames.FOO]