@qbr-code

Почему Typescript позволил создать объект без указания обязательных полей?

Добрый день!

Я создал класс, после чего через конструктор создал экземпляр объекта от данного класса. Объект успешно создался и вывелся в консоль, файл скомпилировался в .js, НО: почему мне не вывелась ошибка, что "Type '{}' is missing the following properties from type 'Vehicle': isSpecial, brand, model, and 2 more." ? Ведь в описании класса эти поля не являются необязательными, но тем не менее я смог создать объект, не указывая их, ошибки не было. Но вот когда я создаю объект вот так: "const toyota: Vehicle = {}", ошибка есть. Через конструктор - нет. Почему?

class Vehicle {
  isSpecial: boolean;
  wheels: number;
  brand: string;
  model: string;
  mileage: number;
  isUsed: boolean;
  constructor (wheels: number, mileage: number) {
    this.wheels = wheels;
    this.mileage = mileage;
  }
  drive(): void {
    this.mileage += 100;
  };
}

const toyota: Vehicle = new Vehicle(4, 200);



console.log(toyota);
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
Это by design для лучшей поддержки всего уже понаписанного и сложившихся практик.

Используйте флаг "strictPropertyInitialization"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы