2018-08-26 01:09:18 +02:00
|
|
|
// Repro from #13118
|
|
|
|
|
2018-08-09 19:17:50 +02:00
|
|
|
interface Foo<A> {
|
|
|
|
a: A;
|
|
|
|
b: (x: A) => void;
|
|
|
|
}
|
|
|
|
|
|
|
|
declare function canYouInferThis<A>(fn: () => Foo<A>): A;
|
|
|
|
|
|
|
|
const result = canYouInferThis(() => ({
|
|
|
|
a: { BLAH: 33 },
|
|
|
|
b: x => { }
|
|
|
|
}))
|
|
|
|
|
2018-08-26 01:09:18 +02:00
|
|
|
result.BLAH;
|
|
|
|
|
|
|
|
// Repro from #26629
|
|
|
|
|
|
|
|
function goofus <ARGS extends any[]> (f: (...args: ARGS) => any ) {}
|
|
|
|
|
|
|
|
goofus((a: string) => ({ dog() { return a; } }));
|
|
|
|
goofus((a: string) => ({ dog: function() { return a; } }));
|