首页 > 解决方案 > 为什么 Typescript 要求分配 Getter?

问题描述

打字稿提示:'缺少类型测试中的以下属性:testGetter'。

export interface ITest {
  id?: string | number;
  property: string;
}

export class Test implements ITest {
  id?: string | number;
  property: string;

  constructor(test?: Test) {
    Object.assign(this, test);
  }

  get testGetter() {
    return 1;
  }
}

标签: angulartypescript

解决方案


您的界面将属性声明为字符串。但是,您不会在类中对其进行初始化,因此它的真实类型是string|undefined

可能是你拼错了界面?

初始化它,代码应该可以工作

export interface ITest {
  id?: string | number;
  property: string;
}

export class Test implements ITest {
  id?: string | number;
  property: string = '';

  constructor(test?: ITest) {
    Object.assign(this, test);
  }

  get testGetter() {
    return 1;
  }
}

new Test(new Test()) //compiles
new Test({ id: '1', property: '2' }) //compiles

推荐阅读