>我有一个 Angular 6 项目,我的问题是在模型类上定义可为空属性的最佳方法是什么?
选项 1:使用?
运算符
export class ProductModel {
public name?: string;
}
选项 2:将属性定义为字符串和null
export class ProductModel {
public name: string | null;
}
请注意,我已经在tsconfig.json
中设置了"strictNullChecks": true
。
也许这只是一种偏好,但如果有人可以帮助我提供一些背景提示和技巧或参考文章?
启用strictNullChecks
name?: string;
名称的类型为string | undefined
。
问题中的两个示例不仅语法略有不同,而且会产生不同的结果:
type WithOptional = {
name?: string;
}
type WithNullable = {
name: string | null;
}
const withOptional: WithOptional = {}; // no error: name is optional
withOptional.name = null; // error: null is not assignable to string | undefined
const withNullable: WithNullable = {}; // error: name is missing
withNullable.name = undefined // error: undefined is not assingable to string | null
如果希望名称既可选又可为空,则可以将其定义为name?: string | null;