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]
)