42 lines
896 B
JavaScript
42 lines
896 B
JavaScript
|
// @flow
|
||
|
|
||
|
// Classes
|
||
|
|
||
|
class C {
|
||
|
foo(): number { return 0; }
|
||
|
foo(): string { return "hello" } // last wins
|
||
|
x: number;
|
||
|
x: string; // last wins
|
||
|
bar(): number { return 0; }
|
||
|
bar: string; // field wins over method
|
||
|
qux: number;
|
||
|
qux(): string { return "hello" } // method loses to field!
|
||
|
}
|
||
|
|
||
|
// check
|
||
|
|
||
|
((new C).foo(): boolean); // last wins
|
||
|
((new C).x: boolean); // last wins
|
||
|
((new C).bar: boolean); // last wins
|
||
|
((new C).qux: boolean); // weird outlier where last doesn't win in classes
|
||
|
|
||
|
// Objects
|
||
|
|
||
|
const o = {
|
||
|
foo(): number { return 0; },
|
||
|
foo(): string { return "hello" }, // last wins
|
||
|
x: 42,
|
||
|
x: "hello", // last wins
|
||
|
bar(): number { return 0; },
|
||
|
bar: "hello", // last wins
|
||
|
qux: 42,
|
||
|
qux(): string { return "hello" }, // last wins
|
||
|
};
|
||
|
|
||
|
// check
|
||
|
|
||
|
(o.foo(): boolean); // last wins
|
||
|
(o.x: boolean); // last wins
|
||
|
(o.bar: boolean); // last wins
|
||
|
(o.qux(): boolean); // last wins
|