首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用getter setter将JSON变量添加到typescript类

使用getter setter将JSON变量添加到typescript类
EN

Stack Overflow用户
提问于 2017-11-01 01:24:55
回答 2查看 672关注 0票数 0

我有一个typescript类,我有几个getter和setter方法来处理一些变量。示例:

代码语言:javascript
运行
复制
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个不同的属性。做这件事最好的方法是什么?最好不用在这个文件之外创建一个新的类

EN

回答 2

Stack Overflow用户

发布于 2017-11-01 01:30:07

JSON是一种数据传输格式。

阅读有关TypeScript接口的内容,定义一个接口,并将类型为该接口的字段添加到您的服务中。

您应该避免在TypeScript中使用这样的getter和setter。这是一种Java语言,但如果需要,TypeScript可以为常规属性定义getter和setter。

你的服务应该减少到

代码语言:javascript
运行
复制
export interface Foo {
  bar: string;
  baz: number;
  wiz: boolean;
}

export class TestService {
  created: boolean;
  foo: Foo; 
}

如果您后来意识到需要拦截对created属性的每个更改,则可以更改为以下代码,而不必对此服务的客户端代码进行任何更改:

代码语言:javascript
运行
复制
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;
  }
}
票数 0
EN

Stack Overflow用户

发布于 2017-11-01 01:30:14

您可以创建一个接口来匹配这些属性:

代码语言:javascript
运行
复制
interface Item {
  color: string;
  size: string;
  shape: string;
}

是否在单独的文件中使用它取决于您,但是您可以使用它:

代码语言:javascript
运行
复制
private item: Item;
public getItem(): Item {
  return this.item;
}
public setItem(item: Item) {
  this.item = item;
}

你也可以做一个内联类型的对象文字:

代码语言:javascript
运行
复制
private item: { color: string, size: string, name: string };

然而,这要冗长得多,而且更容易出错,因为如果你在一个地方更新类型,你可能不得不在所有地方更新它。

Side not:如果你愿意,你可以使用TypeScript Accessors作为getter/setter。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47041177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档