Используйте строковые поля в качестве ключей в определениях типов - PullRequest
0 голосов
/ 13 июля 2020

У меня есть тип Props, который выглядит следующим образом

type Props<FormData> = {
    formData: FormData,
    sectionNme: keyof FormData,
    name: string
}

, но я бы хотел что-то вроде

type Props<FormData> = {
    formData: FormData,
    sectionNme: keyof FormData,
    name: keyof FormData[sectionName]
}

, но я не могу получить доступ к * Поле 1007 * в определении этого типа. Есть ли лучший способ набрать это, кроме string?

1 Ответ

1 голос
/ 13 июля 2020

Введите параметр второго типа:

type Props<FormData extends object, K extends keyof FormData = keyof FormData> = {
    formData: FormData,
    sectionNme: K,
    name: keyof FormData[K]
}

Использование:

interface MyForm {
    foo: {
        bar: string;
    }
}

const props: Props<MyForm> = {
    formData: {
        foo: {
            bar: 'hello'
        }
    },
    sectionNme: 'foo',
    name: 'bar',
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...