TypeScript与Node JSON隐含了对象成员范围的差异



非常基本的范围问题,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.countb.count(或括号表示法(this['count']b['count'](显式引用该属性。没有办法解决这个事实。

最新更新