Я реорганизую код JS в TS (на самом деле jsx / tsx), и у меня возникла проблема с функциями.
Чтобы упростить проблему ... предположим, я получил эту функцию checkIt, которая может принимать строку или число в качестве параметра и возвращать логическое значение.
Это функция JS:
const FIRST_ROW = 'Initial';
const SECOND_ROW = new Set([1, 2, 3, 4]);
const checkIt = id => {
if (FIRST_ROW.includes(id) || SECOND_ROW.includes(id)) {
return true;
}
return false;
}
Вот мое испытание ... (поскольку я изучаю TS, мне нравится объявлять предполагаемые переменные согласованными)
const FIRST_ROW: string = 'Initial';
const SECOND_ROW: Set<number> = new Set([1, 2, 3, 4]);
const checkIt = <T,>(id: T): boolean => {
if (FIRST_ROW.includes(id) || SECOND_ROW.includes(id)) {
return true;
}
return false;
}
Это вызывает у меня ошибку в моих ссылках на идентификатор внутри функции: Аргумент типа 'T' не может быть назначен параметру типа 'string' (или 'number') . Я пробовал использовать выражение функции, строку Union | номер (как описано здесь), различные формы написания обобщений и перегрузок (например, здесь, и я просто не могу это сделать Работа.
Любая помощь здесь ?? Спасибо!