TypeScript 中类属性的约定(标准)是什么?
在 Angular 2 演示(来自 Angular.io 的英雄之旅)中,所有属性都设置为 public :
export class Hero {
id: number;
name: string;
}
所以它们可以通过两种方式实例化:
var hero: Hero = new Hero();
hero.id = 0;
hero.name = "hero";
or
var hero2: Hero = {id : 0, name: "hero"};
是否有 Java 风格约定(像这样):
export class Hero {
private id: number;
private name: string;
setId(id: number): Hero {
this.id = id;
return this;
}
setName(name: string): Hero {
this.name = name;
return this;
}
getId(): number {
return this.id;
}
getName(): string {
return this.name;
}
}
声明(示例):
var hero: Hero = new Hero();
hero.setId(0).setName('hero');
var hero2: Hero = new Hero().setId(0).setName('hero');
Java 是一种静态编译语言。在 Java 中,如果您发布带有类的 .jar 库
class Foo {
public int bar;
}
然后决定引入围绕该领域的逻辑
class Foo {
private int _bar;
public int getBar() { return _bar - 1; }
public void setBar(int v) { _bar = v + 1; }
}
任何使用您的 .jar 的代码都会损坏,并且必须更新并重新编译。这就是为什么在 Java 中公开原始公共字段是一个大禁忌。
TypeScript 是 JavaScript 的超集,是一种动态语言。所有链接都是动态的。您可以安全地发布带有类的库
class Foo {
bar: number
}
如果您稍后发布更新
class Foo {
private _bar: number
get bar() { return this._bar - 1 }
set bar(v: number) { this._bar = v + 1 }
}
您的图书馆用户不会注意到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)