我创建了一个类,然后通过构造函数从该类中创建了对象的实例。对象已成功创建并输出到控制台,文件已编译为.js,但是:为什么我没有收到“类型'{}'缺少类型'车辆'的以下属性的错误:isSpecial,brand ,模型和另外2个。” ?在类描述中,这些字段不是可选的,但是尽管如此,我仍然能够创建一个对象而无需指出它们,没有错误。但是,当我创建这样的对象:“ 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);
预期:错误“类型'{}'缺少类型'车辆'的以下属性:isSpecial,品牌,型号和另外2个。” 实际:没有错误,已创建对象
答案 0 :(得分:2)
您必须打开--strictPropertyInitialization
compiler option,然后会收到错误消息highlighting uninitialized properties。
答案 1 :(得分:0)
isSpecial: boolean;
wheels: number;
brand: string;
model: string;
mileage: number;
isUsed: boolean;
这些不是声明它们是必需的。您声明的这些声明可供您使用。并非this
中的所有实例变量都必须在constructor
中声明,因此,打字稿不会在其中强制执行其声明。唯一需要做的就是将您作为constructor
函数的参数放置的内容