对象属性访问作为打字稿中的函数参数

时间:2020-02-09 16:28:37

标签: reactjs typescript types destructor typescript-typings

嘿,我正在尝试找出正确键入函数的方法,其中一个参数是对象的属性

假设我有以下对象:

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”上不存在属性“主题”。

知道我在做什么错吗?

0 个答案:

没有答案