非常基本的范围问题,TypeScript中的新问题。
我如何在tsc 4.3.5中进行以下工作,就像它在节点14.17.1中的工作方式一样——我指的是函数找不到的计数对象成员引用(TS2304(。似乎要么我以某种方式得到了一个隐含的"这个"效应,要么只是让它将变量定义放宽到全局空间中。
有没有一种方法可以让它在不更改源代码的情况下运行?这种使用预期在我的模板场景中无处不在。我不介意它是否放松到所有东西都在一个大的全局命名空间中,碰撞不是问题。我怀疑隐含的"这"不是一个选项,因为我在任何地方都没有见过它(太糟糕了,因为这是我真正想要的(。
//var count = 0;
var b = {
count: 0,
incr: function(i) { return (count += i); }
};
console.log(b.incr(1));
console.log(b.incr(2));
// should print
// 1
// 3
"有没有一种方法可以让它在不更改源代码的情况下工作">
否。隐式this
不是typescript或javascript的特性。有些语言有它,但这里没有等价的语法。
this
是如何消除像var count
这样的局部变量和上下文属性this.count
之间的歧义。如果取消对第一行的注释,则代码可以工作,但它使用的是局部变量,而不是b
对象中定义的变量。
如果要更新b
对象中的count
,则必须通过点表示法(this.count
或b.count
(或括号表示法(this['count']
或b['count']
(显式引用该属性。没有办法解决这个事实。