嘿,我正在尝试找出正确键入函数的方法,其中一个参数是对象的属性
假设我有以下对象:
type ThemeType = {
colors: {
default: string;
secondary: string;
highlight: string;
[key: string]: string;
};
sizes: {
small: number | string;
medium: number | string;
large: number | string;
};
}
现在,我希望函数中的第二个参数可以访问ThemeType
类型内部的属性之一。
示例用法为:
getThemeValue(props, colors.secondary)
// would essentially returns props.theme.color.secondary (string value)
我尝试了以下方法:
interface ThemePropsType {
theme: ThemeType
}
export const getThemeValue = <ThemePropsType, K extends keyof ThemeType>
(props: ThemePropsType, themeProperty: K) => (
props.theme[themeProperty]
)
但这会导致以下错误:
类型“ ThemePropsType”上不存在属性“主题”。
知道我在做什么错吗?