Доступ к свойству объекта как аргумент функции в машинописи - PullRequest
0 голосов
/ 09 февраля 2020

Эй, я пытаюсь найти способ правильно набрать функцию, , где один из параметров является свойством объекта

Допустим, у меня есть следующий объект:

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

Это приводит к следующей ошибке:

Свойство 'theme' делает не существует в типе 'ThemePropsType'.

Есть идеи, что я здесь не так делаю?

...