说明
strictPropertyInitialization 设置类的实例属性都 必须初始化
配置
如果指定 tsconfig.json 配置文件,并且指定下面配置:
{
"compilerOptions": {
"strict": true, // 设置严格检查,设置该项,默认设置strictPropertyInitialization为true
}
}
或
{
"compilerOptions": {
"strictPropertyInitialization": true, // 类的实例属性都必须初始化
"strictNullChecks": true, // 必须同时打开该配置
}
}
报错代码
class User {
// 报错,属性 username 没有初始化
username: string;
}
基本解决方法
解决方法一:定义属性时直接赋值
class User {
username = "张三";
}
解决方法二:在构造方法中赋值
class User {
username: string;
constructor(username: string) {
this.username = username;
}
}
解决方法三
class User {
constructor(public username: string) {}
}
其他解决方法
有时候,我们确定某个变量 不会是 null 或 undefined,但 无法 定义时赋值,也 无法在构造方法中赋值,用下面解决方法
解决方法一:联合类型
class User {
// 表示username即可以是string,也可以是 undefind 类型
username: string | undefined;
}
解决方法二:确定赋值断言
详见下文中的实例属性:
https://www.malaoshi.top/show_1IX8kU8YAqoL.html#实例属性