声明默认值的语法

时间:2017-07-14 13:36:48

标签: typescript

我最近一直在尝试使用打字稿中的OO,并且一直试图声明一些泛型类。

我正在尝试扩展一个类,并在类本身内声明默认值,但是我遇到了语法错误。

为什么我的财产只能在这种情况下阅读?

    export interface Heading {
      size: number;
      color: number;
    }

    export class text {
      size: number;
      color: number;
    }

    export class Document extends text {
      H1: Heading = {
        size = 1 // syntax error - Cannot assign to 'Number' because it is a constant or a read-only property.
      };
    }

2 个答案:

答案 0 :(得分:2)

你有两个问题。

首先,如果您要将+属性排除在外,则必须将color属性标记为可选。

export interface Heading {
    size: number;
    color?: number;
}

其次,您必须使用对象表示法:而不是等于。

export class Document extends text {
    public H1: Heading = {
        size:  1
    };
}

答案 1 :(得分:1)

如果您希望Document具有大小和颜色的默认值,您应该按照它们在扩展类text中显示的值进行编写:

export class Document extends text {
  size = 1;
  color = 1;
}

顺便说一下,你的代码存在问题:

TypeScript编译器确实说H1缺乏颜色属性。因此,您将其添加到您的班级

export interface Heading {
  size: number;
  color: number;
}

export class text {
  size: number;
  color: number;
}

export class Document extends text {
  H1: Heading = {
    size: 1,
    color: 1,
  };
}

或放置一个可选的?运算符:

export interface Heading {
  size: number;
  color?: number;
}

export class text {
  size: number;
  color: number;
}

export class Document extends text {
  H1: Heading = {
    size: 1
  };
}