export class Customer {
id: number;
firstName: string;
}
让customer = new Customer();
在控制台日志中输出:
customer.id
未定义
customer.firstName
未定义
我希望id
0 ,firstName
null 作为默认值,但尚未初始化。
为什么不是这样?
我使用TS 2.3.6
答案 0 :(得分:1)
除了类的范围外,类属性声明与普通变量声明没有什么不同。假设您在没有类的情况下声明任何变量,
let id;
let firstName;
在JavaScript中并检查它的值 - 默认情况下为undefined
。打字稿只遵循javascript的行为。
答案 1 :(得分:1)
如果您想设置默认值,您必须手动执行此操作:
export class Customer {
id: number = 0;
firstName: string = null; // Warning, won't work if --strictNullChecks is enabled
}
打字稿不会为您填写默认值,因为它不清楚在任何给定情况下哪种默认值是合适的。例如,在您的代码段中,您说firstName
的默认值应为null
,但在另一个用例中,它可能更有意义为空字符串。
此外,typecript设置默认值可能超出了范围,因为理想情况下,typescript只检查你的类型,但是代码与尽可能多的代码相同(即删除类型注释但保留其余部分)原样)。因此,如果需要,可以在开发人员上定义默认值。