Typescript - Generic Constraints - не принимает объектный литерал соответствующего типа
Используя машинопись 3, в угловых 7 рамок.
Я пытаюсь подготовить свои локальные элементы массива Store для firebase, используя свойство Id объекта в качестве его ключа в обертывающем объекте, и наоборот, при извлечении из firestore.
Я настроил интерфейс, который должен работать с любым из моих локальных элементов Store, поскольку все они имеют свойство id:
interface localItem {id:string, [x:string]:any}
и эквивалент Firebase, поскольку все они используют идентификатор в качестве ключа
interface firebaseItem {[id:string]:{[x:string]:any}}
Я пытаюсь перебрать элемент Firebase и снова превращаю его в массив, но получаю ошибку типа:
unwrapForLocalStore<T extends localItem>(firebaseItems:firebaseItem):T[]{
let itemArray: T[] = [];
for(let item in firebaseItems){
let newItem:T = {id:item, ...firebaseItems[item]}
/*
[ts] Type '{ id: string; }' is not assignable to type 'T'. [2322]
let newItem: T extends localItem
*/
itemArray.push(newItem)
}
return itemArray
}
Я прочитал документы по машинописному тексту, и если я что-то упустил, я не понимаю, почему созданный мною объектный литерал не может быть назначен типу T. Я знаю, что могу ввести тип для моего литерала объекта, который разрешит его, но я не понимаю, зачем мне это нужно Typescript имеет всю информацию, чтобы найти совпадение типов.
По какой причине он не распознается в этом случае?