我想做的就是这样。
export class TestModel {
item1: {title: 'specific title', content: string};
item2: {title: 'specific title', content: string};
}
声明对象{title:string,value:string},并仅初始化title。
内容的值将在声明后添加。
但是没有用。 所以我将其更改为这样。
interface testInterface {
title: string;
content: string;
}
export class TestModel {
item1: testInterface ;
item2: testInterface ;
constructor() {
this.item1 = { title: 'specific titleA', content: '' };
this.item2 = { title: 'specific titleB', content: '' };
}
}
我想在没有构造函数()的情况下初始化标题,以减少代码量。
(如果可能的话,仅初始化标题,而不初始化内容)。
我尝试了
item1: testInterface = { title = 'specific titleA, content = '' };
而且也没有用。
有什么好的解决方法吗?
答案 0 :(得分:1)
您可以在字段声明中分配默认值,然后将Partial
对象传递给构造函数并合并它们:
interface TestInterface {
title: string;
content: string;
}
export class TestModel {
item1: TestInterface = {title: 'Default title', content: 'Default content'};
item2: TestInterface = {title: 'Default title', content: 'Default content'};
constructor(item1: Partial<TestInterface>, item2: Partial<TestInterface>) {
this.item1 = {...this.item1, ...item1};
this.item2 = {...this.item2, ...item2};
}
}
const x = new TestModel({title: 'Specific title 1'}, {content: 'Content 2'});
如果仍然重复太多,则可以声明一个常量以保存默认值:
const DEFAULT_TEST_INTERFACE = {title: 'Default title', content: 'Default content'};
export class TestModel {
item1: TestInterface = DEFAULT_TEST_INTERFACE;
item2: TestInterface = DEFAULT_TEST_INTERFACE;
/* rest is same as above */
}