Проверка типа в массивах

0

У меня есть класс

class Clazz{constructor(public foo: string, public bar: string)}

и затем я создаю такой массив:

var cls: Clazz[] = [{foo: 'Foo', bar: 'Bar'}, {foo:'Missing bar'}]

Контроллер типа не жалуется на предмет с отсутствующим bar. Это по дизайну? Если да, какова мотивация этого поведения?

Теги:

2 ответа

2
Лучший ответ

Контроллер типа не жалуется на предмет с отсутствующим баром

Оно делает:

Изображение 174551

См. Образец на детской площадке.

Обратите внимание, что ваш код также имел синтаксическую ошибку (о которой также сообщалось... тело конструктора отсутствовало).

  • 0
    похоже, это проблема моей IDE (IntelliJ Idea), проверена на VS Code и работает нормально
0

Вы можете оставить аргументы, и они будут инициализированы значением по умолчанию. Обычно это делается, если вы еще не знаете желаемого значения или у вас все в порядке с установленным значением по умолчанию. Кроме того, если у вас есть класс с большим количеством свойств, возможно, вы не захотите установить их в вызове конструктора.

  • 0
    Когда я пытаюсь создать один экземпляр, например, var c: Clazz = {foo: 'Missing bar'}, тогда проверка типов жалуется - у моего класса не установлены значения по умолчанию. В моем примере второй элемент не имеет структурного типа, совместимого с «Clazz», поэтому он будет непригодным для использования в контексте, где ожидается «Clazz».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню