参考这个没有选中的类型

时间:2014-08-21 05:54:21

标签: typescript

在以下代码中,调用add(n, this)不会引发错误 其中this的类型为Object:

var add = (n1: number, n2: number): number => n1 + n2;

var o = {
  bias: 42,
  addBias: function(n: number): number {
    return add(n, this);            // No error.
//    return add(n, this.bias);       // This is the correct code.
  }
};

alert(o.addBias(10));   // Displays '10[object Object]'.

这是一个错误还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

这是因为this被推断为any类型。 any与两个方向的所有内容都兼容,例如

var foo = 123;
var bar:any;

// Allowed
bar = foo = bar; 

如果将鼠标悬停在它上面,您会看到它:

enter image description here

TypeScript不会在对象文字中推断出this的含义,并假定它们是any

this仅在课程中推断,即使这样,您也需要小心:https://www.youtube.com/watch?v=tvocUcbCupA&hd=1(就像JavaScript的工作方式一样)。