|
| 1 | +=== tests/cases/compiler/discriminateObjectTypesOnly.ts === |
| 2 | +type Thing = number | object; |
| 3 | +>Thing : Symbol(Thing, Decl(discriminateObjectTypesOnly.ts, 0, 0)) |
| 4 | + |
| 5 | +const k: Thing = { toFixed: null }; // OK, satisfies object |
| 6 | +>k : Symbol(k, Decl(discriminateObjectTypesOnly.ts, 1, 5)) |
| 7 | +>Thing : Symbol(Thing, Decl(discriminateObjectTypesOnly.ts, 0, 0)) |
| 8 | +>toFixed : Symbol(toFixed, Decl(discriminateObjectTypesOnly.ts, 1, 18)) |
| 9 | + |
| 10 | +type Thing2 = number | { toFixed: null } | object; |
| 11 | +>Thing2 : Symbol(Thing2, Decl(discriminateObjectTypesOnly.ts, 1, 35)) |
| 12 | +>toFixed : Symbol(toFixed, Decl(discriminateObjectTypesOnly.ts, 3, 24)) |
| 13 | + |
| 14 | +const q: Thing2 = { toFixed: null }; |
| 15 | +>q : Symbol(q, Decl(discriminateObjectTypesOnly.ts, 4, 5)) |
| 16 | +>Thing2 : Symbol(Thing2, Decl(discriminateObjectTypesOnly.ts, 1, 35)) |
| 17 | +>toFixed : Symbol(toFixed, Decl(discriminateObjectTypesOnly.ts, 4, 19)) |
| 18 | + |
| 19 | +const h: Thing2 = { toString: null }; // OK, satisfies object |
| 20 | +>h : Symbol(h, Decl(discriminateObjectTypesOnly.ts, 5, 5)) |
| 21 | +>Thing2 : Symbol(Thing2, Decl(discriminateObjectTypesOnly.ts, 1, 35)) |
| 22 | +>toString : Symbol(toString, Decl(discriminateObjectTypesOnly.ts, 5, 19)) |
| 23 | + |
| 24 | +type Thing3 = number | { toFixed: null, toString: undefined } | object; |
| 25 | +>Thing3 : Symbol(Thing3, Decl(discriminateObjectTypesOnly.ts, 5, 37)) |
| 26 | +>toFixed : Symbol(toFixed, Decl(discriminateObjectTypesOnly.ts, 7, 24)) |
| 27 | +>toString : Symbol(toString, Decl(discriminateObjectTypesOnly.ts, 7, 39)) |
| 28 | + |
| 29 | +const l: Thing3 = { toString: undefined }; // error, toFixed isn't null |
| 30 | +>l : Symbol(l, Decl(discriminateObjectTypesOnly.ts, 8, 5)) |
| 31 | +>Thing3 : Symbol(Thing3, Decl(discriminateObjectTypesOnly.ts, 5, 37)) |
| 32 | +>toString : Symbol(toString, Decl(discriminateObjectTypesOnly.ts, 8, 19)) |
| 33 | +>undefined : Symbol(undefined) |
| 34 | + |
0 commit comments