Вопрос:type MyStructure = Object[] | Object; const myStructure: MyStructure = [{ foo: «bar» }]; myStructure.map(); // Property ‘map’ does not exist on type ‘MyStructure’. any
Библиотека либо поставляет объект, либо массив этого объекта. Как я могу напечатать это?
РЕДАКТИРОВАТЬ
И как я могу получить доступ к таким свойствам, как myStructure[«foo»] если myStructure будет объектом?
Лучший ответ:
Поскольку ваш тип означает, что у вас может быть объект, или у вас может быть массив; TypeScript не может определить, какие элементы подходят.
Чтобы проверить это, измените свой тип, и вы увидите, что теперь доступен метод map:
type MyStructure = Object[];
В вашем случае фактическое решение будет заключаться в использовании защиты типа, чтобы проверить, что у вас есть массив, прежде чем пытаться использовать метод map.
if (myStructure instanceof Array) { myStructure.map((val, idx, []) => { }); }
Вы также можете решить свою проблему, используя немного другое определение MyStructure, например:
type MyStructure = any[] | any;
Или уже:
class Test { foo: string; } type MyStructure = Test[] | Test;