#reactjs #typescript
#reactjs #typescript
Вопрос:
У меня есть универсальная функция, которая извлекает некоторые данные:
function getData<T extends A | B | C>(initial: T[]): T[] {
const [data, setData] = useState<T[]>([]);
useEffect(() => {
...some query
setData(query result);
}, []);
return data;
}
interface A {
someKeyA: string;
}
interface B {
someKeyB: number;
}
interface C {
someKeyC: A;
}
В другой вспомогательной функции для запроса мне нужно получить типы ключей T. Если исходный массив данных не пуст, я могу это сделать, и это работает
const _key = typeof data[0].["someKeyA" as keyof T];
Но иногда начальный массив данных пуст, а затем происходит сбой, потому что data[0] не определено.
Что мне нужно, так это получить K extends keyof T, если данные не переданы. Возможно ли получить ключ typeof из универсального интерфейса по значению ключа или, возможно, создать какой-либо временный объект с типом T?
Комментарии:
1. Нет, типы не существуют во время выполнения (удаляются во время компиляции)
2. @AlekseyL.Ok, так и думал, но не был уверен. Решил жестко запрограммировать некоторые значения ключа и по умолчанию установил rest.