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赋值

评论

暂无评论数据

暂无评论数据

目录