2017-10-11 02:34:32 +02:00
|
|
|
// Repro from #19043
|
|
|
|
|
|
|
|
type B = {b: string}
|
|
|
|
|
|
|
|
const flowtypes = <A>(b: B) => {
|
|
|
|
type Combined = A & B
|
|
|
|
|
|
|
|
const combined = (fn: (combined: Combined) => void) => null
|
|
|
|
const literal = (fn: (aPlusB: A & B) => void) => null
|
|
|
|
|
|
|
|
return {combined, literal}
|
|
|
|
}
|
|
|
|
|
|
|
|
const {combined, literal} = flowtypes<{a: string}>({b: 'b-value'})
|
|
|
|
|
|
|
|
literal(aPlusB => {
|
|
|
|
aPlusB.b
|
|
|
|
aPlusB.a
|
|
|
|
})
|
|
|
|
|
|
|
|
combined(comb => {
|
|
|
|
comb.b
|
|
|
|
comb.a
|
|
|
|
})
|
2017-10-12 01:03:15 +02:00
|
|
|
|
|
|
|
// Repro from #19091
|
|
|
|
|
|
|
|
declare function f<T>(a: T): { a: typeof a };
|
|
|
|
let n: number = f(2).a;
|