关于ts 属性“xxx”没有初始化表达式,且未在构造函数中明确赋值的解决方案
ts默认要求class中声明的属性必须初始化,所以,如果存在没有被初始化的属性,就会报这个错误。
如果我们让他或者等于null,那么在调用属性的时候又会提示值可能为null,极度麻烦
class A {
data: { name: string } | null = null;
}
const a = new A();
console.log(a.data.name);
然后你又不得不搞个非空断言。
console.log((a.data!).name);
每次都这么写非常麻烦。
赋值方案
既然他要赋值那么我们就赋值
class A {
data: { name: string };
constructor(data: { name: string }) {
this.data = data;
}
}
const a = new A({name:"sss"});
console.log(a.data.name);
通过构造函数赋值也可以避免这个问题,这个可以解决一部分问题,但是不能解决全部。
tsconfig.json 方法
直接关闭ts的检测初始化的配置,打开tsconfig.json
;找到strictPropertyInitialization
,将其改为false即可,没有就手动加上。
{
"strictPropertyInitialization": false
}
单次忽略
如果你既不想在构造函数里赋值,也不想改变全局的配置,那么可以使用单次忽略配置
class A {
// @ts-ignore
name: string;
}
const a = new A();
console.log(a.name);
三种方案,根据使用情况使用即可
分类:
TypeScript
标签:
TypeScript赋值
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据