Typescript 省略使用“;这一点;总是
我有一些代码,比如Typescript 省略使用“;这一点;总是,typescript,syntactic-sugar,Typescript,Syntactic Sugar,我有一些代码,比如 get ab(){ if(this.a == this.b) this.c = this.a.add(this.b); if(this.d == this.b) this.d = this.a.add(this.b, this.bIdx).normalize(); return this._ab || (this._ab = new Edge(this.allPoints, this.a
get ab(){
if(this.a == this.b) this.c = this.a.add(this.b);
if(this.d == this.b) this.d = this.a.add(this.b, this.bIdx).normalize();
return this._ab ||
(this._ab = new Edge(this.allPoints, this.aIdx, this.bIdx));
}
真烦人!也会影响可读性。这段代码可能要短得多。。。如何在C++或HAXE风格中使用TS,在这里我们不必提及“这个”。对于编译器来说,猜测“如果存在变量名-检查是否存在此名称的成员”不是很容易吗
注意:我的问题与此无关:-在这里,开发人员询问是否可以不使用传递给构造函数的瞬态对象属性。在我的问题中,我问在访问属性时是否可以省略“this”关键字TypeScript(和JavaScript)没有隐含的this
对于仅要读取(而不是写入)的值,可以将其分解为局部变量或常量:
get ab(){
const {a, b, d, aIdx, bIdx, _ab} = this;
if(a == b) this.c = a.add(b);
if(d == b) this.d = a.add(b, bIdx).normalize();
return _ab ||
(_ab = new Edge(allPoints, aIdx, bIdx));
}
但您可能更喜欢Crockford风格的闭包编程。与带有a
、b
等的对象不同,函数中包含局部变量,该函数返回带有方法的对象:
function createExample() {
let a, b, c, d, aIdx, bIdx, _ab;
// ...
return {
ab() {
if(a == b) c = a.add(b);
if(d == b) d = a.add(b, bIdx).normalize();
return _ab ||
(_ab = new Edge(allPoints, aIdx, bIdx));
}
};
}
然后,由于返回函数的方法与创建它的调用中的局部数接近,因此直接使用a
、b
等
不过,最好尽量减少这两种风格的混合。请注意,这种风格目前在JavaScript和TypeScript领域不如使用带有属性的对象那样流行,这可能是让其他人处理代码时的一个因素。(尽管这只是一个培训问题。)这是否回答了您的问题?对我来说,看起来你应该实施战略模式不,这是另一个问题。在那里,一个人询问是否可以不使用传递给构造函数的瞬态对象属性。在我的问题中,我问在访问局部变量时是否可以省略“this”关键字。@shal-您指的是属性。(当访问局部变量时,你总是省略
这个
。)哦,对了,对不起,我的坏:)或多或少,它会做:)但是它会复制,所以我不能做“property=value”,我必须“this.property=value”,对吗?@shal-对,这就是为什么我上面有this.c=
和this.d=
,以及使用const
的部分原因(因此,如果您忘记了,您会得到一个明显的错误,而不仅仅是……没有看到更改发生)。