我正在try 创建一个通用设置实用程序,该实用程序提供一些基本返回类型.我们的应用程序将所有设置存储在集中的字典中,我不需要手动指定每个键的类型,而是提供可能类型的映射.
例如,假设我们有设置键的 map :
const UserSettings = {
DEFAULT_ORGANIZATION: 'user_profile.default_organization',
THEME: 'user_profile.theme'
} as const;
我想创建一个相应的 map ,看起来像:
type UserSettingsTypes = {
'user_profile.default_organization': boolean;
'user_profile.theme': { primary: string; secondary: string };
};
这样我就可以编写一个设置查找函数,看起来像:
const organization = readSetting<UserSettingsTypes>(UserSettings.DEFAULT_ORGANIZATION);
其中organization
具有boolean
的正确类型.
我try 在readSetting
中添加一个通用名称,看起来像:
const readSetting = <T extends Record<string, unknown>, K = keyof T>(key: K): T[K] => {
// ...
};
但它抱怨"类型‘K’不能用于索引类型‘T’"
Is it possible to provide a mapped return type like this?
If so, how should I structure 100 so that it can correctly return the mapped type in 101?
以下是显示该问题的示例:https://tsplay.dev/m0d2qm