我最近一直在尝试使用打字稿中的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.
};
}
答案 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
};
}