в себя 2 разных объекта, и когда я пытаюсь достать нужное мне свойство, то вылетает ошибка
Типа в первом объекте нет ключа, который есть во втором объекте
interface Object1 {id: string};
interface Object2 {id: string, sportId: string};
type Ids = ‘id’ | ‘sportId’;
const test = (objejct: Object1 | Object2, id: Ids) => {
if (object[id]) { <—— ОШИБКА ТУТ
// … code
}
}
const object1 = {id: ‘id1’};
const object2 = {id: ‘id2’, sportId: ‘sportId1’};
test(object1, ‘id’);
test(object2, ‘sportId’);
TS7053: Element implicitly has an 'any' type because expression of type 'Ids' can't be used to index type '{ id: number; } | { id: number; sportId: number; }'.
Property 'sportId' does not exist on type '{ id: number; } | { id: number; sportId: number; }'.
Как это можно исправить?
ну у вас один тип шире другого как и диапазон вариантов в типе строки. никак это не исправить, вводить функцию которая вам будет тип выводить
Обсуждают сегодня