с методами (комментарием обозначил разные типы параметров функций)
const emailTypes = {
confirmEmail: generateConfirmEmailOptions, // { a: string, b: string;}
restorePassword: generateRestorePasswordOptions, // { a: string, b: number;}
};
Тип с ключами этого объекта:
export type IEmailTypes = typeof emailTypes;
и сам метод:
export const getEmailOptions = <T extends keyof IEmailTypes>(emailType: T, emailData: Parameters<IEmailTypes[T]>[0]) =>
emailTypes[emailType](emailData);
Сейчас ругается на (emailData), не могу понять почему.
Мне казалось, что делаю правильно. Я передаю названия ключа в T, далее беру параметры функции по этому ключу.
Но нет, ругается, если разные типы.
Хочу сделать так, чтобы при передаче, к примеру
confirmEmail
в emailType , TS мне точно подсказывал, какой должна быть emailData
Что не так делаю?
Для наглядности, прикреплю скрин
*методы в emailTypes имеют типы параметров
Дружище, закинь в песочницу, в телеге непонятно ниче
https://codesandbox.io/s/modest-goldberg-1ljfjy?file=/src/index.ts
поправил ошибки, а то на скорую руку упустил)
Обсуждают сегодня