1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
// @noImplicitAny: true
// @strictNullChecks: true
// @jsx: preserve
// Repro from #41759
namespace JSX {
export interface Element {}
}
type DiscriminatorTrue = {
disc: true;
cb: (x: string) => void;
}
type DiscriminatorFalse = {
disc?: false;
cb: (x: number) => void;
}
type Props = DiscriminatorTrue | DiscriminatorFalse;
declare function Comp(props: DiscriminatorTrue | DiscriminatorFalse): JSX.Element;
// simple inference
void (<Comp disc cb={s => parseInt(s)} />);
// simple inference
void (<Comp disc={false} cb={n => n.toFixed()} />);
// simple inference when strict-null-checks are enabled
void (<Comp disc={undefined} cb={n => n.toFixed()} />);
// requires checking type information since discriminator is missing from object
void (<Comp cb={n => n.toFixed()} />);
|