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
|
=== tests/cases/compiler/narrowingTypeofObject.ts ===
interface F { (): string }
function test(x: number & { _foo: string }) {
>test : (x: number & { _foo: string;}) => void
>x : number & { _foo: string; }
>_foo : string
if (typeof x === 'object') {
>typeof x === 'object' : boolean
>typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
>x : number & { _foo: string; }
>'object' : "object"
x;
>x : never
}
}
function f1(x: F & { foo: number }) {
>f1 : (x: F & { foo: number;}) => void
>x : F & { foo: number; }
>foo : number
if (typeof x !== "object") {
>typeof x !== "object" : boolean
>typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
>x : F & { foo: number; }
>"object" : "object"
x;
>x : F & { foo: number; }
}
}
|