Reactjs 在typescript中作为函数参数访问对象属性

Reactjs 在typescript中作为函数参数访问对象属性,reactjs,typescript,types,destructor,typescript-typings,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;

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

假设我有以下目标:

type ThemeType = { 
   colors: {
     default: string;
     secondary: string;
     highlight: string;
     [key: string]: string;
   };
   sizes: {
     small: number | string;
     medium: number | string;
     large: number | string;
   };
}

现在,我希望在函数中有一个辅助参数来访问
ThemeType
类型中的一个属性

示例用法如下:


我尝试了以下方法:

interface ThemePropsType {
  theme: ThemeType
}

export const getThemeValue = <ThemePropsType, K extends keyof ThemeType>
(props: ThemePropsType, themeProperty: K) => (
   props.theme[themeProperty]
)
接口主题主题{
主题:主题类型
}
导出常量getThemeValue=
(道具:ThemePropsType,themeProperty:K)=>(
道具.主题[主题财产]
)
但是,这会导致以下错误:

类型“ThemePropsType”上不存在属性“theme”


你知道我做错了什么吗?

“示例用法会是”-一个参考错误,因为
颜色。次要的
只在
道具的“内部”可用。主题
。你可能在寻找
键,但你的示例在它的作用方面并不完全一致。@Andreas这就是我正在尝试的。基本上,我需要第二个参数来访问
props.theme
interface ThemePropsType {
  theme: ThemeType
}

export const getThemeValue = <ThemePropsType, K extends keyof ThemeType>
(props: ThemePropsType, themeProperty: K) => (
   props.theme[themeProperty]
)