我有一个typescript类,我有几个getter和setter方法来处理一些变量。示例:
export class TestService {
private created: boolean;
public getCreated(): boolean {
return this.created;
}
public setCreated(created: boolean): void {
this.created= created;
}
}我想再给这个类添加一个变量,并为此添加一个getter setter。然而,这个变量不是一个简单的字符串/布尔原语,而是需要某种JSON,它可以有自己的属性(比如颜色、大小、形状),可以设置,我不想为这3个属性使用3个额外的变量和相应的getter setter方法,只需要一个JSON就可以拥有3个不同的属性。做这件事最好的方法是什么?最好不用在这个文件之外创建一个新的类
发布于 2017-11-01 01:30:07
JSON是一种数据传输格式。
阅读有关TypeScript接口的内容,定义一个接口,并将类型为该接口的字段添加到您的服务中。
您应该避免在TypeScript中使用这样的getter和setter。这是一种Java语言,但如果需要,TypeScript可以为常规属性定义getter和setter。
你的服务应该减少到
export interface Foo {
bar: string;
baz: number;
wiz: boolean;
}
export class TestService {
created: boolean;
foo: Foo;
}如果您后来意识到需要拦截对created属性的每个更改,则可以更改为以下代码,而不必对此服务的客户端代码进行任何更改:
export class TestService {
private _created: boolean;
foo: Foo;
get created(): boolean {
return this._created;
}
set created(c: boolean) {
console.log('setting created...');
this._created = c;
}
}发布于 2017-11-01 01:30:14
您可以创建一个接口来匹配这些属性:
interface Item {
color: string;
size: string;
shape: string;
}是否在单独的文件中使用它取决于您,但是您可以使用它:
private item: Item;
public getItem(): Item {
return this.item;
}
public setItem(item: Item) {
this.item = item;
}你也可以做一个内联类型的对象文字:
private item: { color: string, size: string, name: string };然而,这要冗长得多,而且更容易出错,因为如果你在一个地方更新类型,你可能不得不在所有地方更新它。
Side not:如果你愿意,你可以使用TypeScript Accessors作为getter/setter。
https://stackoverflow.com/questions/47041177
复制相似问题