Свойство ‘map’ не существует в типе Object

Вопрос:type MyStructure = Object[] | Object; const myStructure: MyStructure = [{ foo: "bar" }]; myStructure.map(); // Property 'map' does not exist on type 'MyStructure'. any Библиотека либо поставляет объект, либо массив этого объекта. Как я могу напечатать это? РЕДАКТИРОВАТЬ И как я могу получить доступ к таким свойствам, как myStructure["foo"] если myStructure будет объектом? Лучший ответ:

Вопрос: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;

Оцените статью
Добавить комментарий