prettier/tests/flow/this/arrows.js

28 lines
545 B
JavaScript

class C {
foo() {
return () => { return this.bar(); }; // OK, since this: C
}
bar() { return this; } // return type is C
}
var c = new C;
var f = c.foo();
var i = f(); // OK
(i: C); // OK
class D extends C { }
var d = new D;
var g = d.foo();
var j = g(); // OK
(j: D); // error, since return type of bar is C, not the type of `this`
class E {
foo(x: number) { }
}
class F extends E {
foo() { // OK to override with generalization
(() => {
super.foo(""); // find super method, error due to incorrect arg
})();
}
}