#typescript
Вопрос:
Допустим, у меня есть класс с именем Форма.
export class Form {}
Как я могу проверить, является ли переменная массивом Form
?
const foo: Form = new Form()
if (foo instanceof Form) {}
const baz: Form[] = [new Form(), new Form()]
?
Ответ №1:
Вы сказали I am not worrying about different types
Хорошо, просто проверьте baz
, является ли массив массивом или нет Array.isArray(value)
, а затем проверьте единственный первый элемент по экземпляру, как это:
if (Array.isArray(baz) amp;amp; baz.length > 0 amp;amp; baz[0] instanceof Form) {
}
Ответ №2:
Вы можете использовать Array.prototype.every
, чтобы проверить, действительно ли каждая отдельная запись в вашем baz
массиве является экземпляром Form
:
const baz = [new Form(), new Form()];
console.log(baz.every(entry => entry instanceof Form)); // true
const baz2 = [new Form(), new Form(), ''];
console.log(baz2.every(entry => entry instanceof Form)); // false
Смотрите Доказательство концепции на игровой площадке TypeScript.
Комментарии:
1. Я не беспокоюсь о разных типах в массиве. Итак, я спрашиваю, существует ли какой-либо синтаксис условий, подобный
baz instanceof Form[]
?2. @berkan Это именно то, что делает мой ответ. Чтобы проверить , существует ли массив
Form[]
, это означает, что вам нужно проверить, является ли каждый отдельный элемент в массиве экземпляромForm
3. @berkan Нет, такого синтаксиса
baz instanceof Form[]
нет . Вам нужно создать цикл и проверить каждый элемент массива