也许这个问题已被提出,但我找不到任何问题。而且看起来很天真。 TypeScript可以很好地使用对象文字表示法,但是在定义其中的方法时,它不能正确处理该函数中的this
上下文,似乎this
接收any
类型,所以有没有自动完成。
var foo = {
log(str) {
console.log(str);
},
print(str) {
this. /* No autocompletion */
}
};
foo. /* Normal autocompletion */
当然,我希望自动完成在方法中正常工作,就像使用foo
变量时一样。我可以先声明一个类,然后实例化该对象,但如果没有声明中间class
或interface
,它为什么不起作用,在这个简单的例子中它似乎是一个样板?
答案 0 :(得分:1)
官方TypeScript Documentation关于职能:
[...]仍然是
any
。那是因为this
来自对象文字内的函数表达式。
GitHub上的TypeScript Wiki对this
关键字及其上下文也有很好的解释。
答案 1 :(得分:0)
供以后参考: 从TS@2.3开始,此行为会稍微复杂一些:
如果该方法具有显式声明的此参数,则该参数具有该参数的类型。
否则,如果该方法由带有 此参数,具有该参数的类型。