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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
=== tests/cases/compiler/typeGuardConstructorPrimitiveTypes.ts ===
// Narrow a union of primitive types
let var1: string | number | boolean | any[] | symbol | bigint;
>var1 : string | number | bigint | boolean | symbol | any[]
if (var1.constructor === String) {
>var1.constructor === String : boolean
>var1.constructor : Function
>var1 : string | number | bigint | boolean | symbol | any[]
>constructor : Function
>String : StringConstructor
var1; // string
>var1 : string
}
if (var1.constructor === Number) {
>var1.constructor === Number : boolean
>var1.constructor : Function
>var1 : string | number | bigint | boolean | symbol | any[]
>constructor : Function
>Number : NumberConstructor
var1; // number
>var1 : number
}
if (var1.constructor === Boolean) {
>var1.constructor === Boolean : boolean
>var1.constructor : Function
>var1 : string | number | bigint | boolean | symbol | any[]
>constructor : Function
>Boolean : BooleanConstructor
var1; // boolean
>var1 : boolean
}
if (var1.constructor === Array) {
>var1.constructor === Array : boolean
>var1.constructor : Function
>var1 : string | number | bigint | boolean | symbol | any[]
>constructor : Function
>Array : ArrayConstructor
var1; // any[]
>var1 : any[]
}
if (var1.constructor === Symbol) {
>var1.constructor === Symbol : boolean
>var1.constructor : Function
>var1 : string | number | bigint | boolean | symbol | any[]
>constructor : Function
>Symbol : SymbolConstructor
var1; // symbol
>var1 : symbol
}
if (var1.constructor === BigInt) {
>var1.constructor === BigInt : boolean
>var1.constructor : Function
>var1 : string | number | bigint | boolean | symbol | any[]
>constructor : Function
>BigInt : BigIntConstructor
var1; // bigint
>var1 : bigint
}
// Narrow a union of primitive object types
let var2: String | Number | Boolean | Symbol | BigInt;
>var2 : String | Number | Boolean | BigInt | Symbol
if (var2.constructor === String) {
>var2.constructor === String : boolean
>var2.constructor : Function
>var2 : String | Number | Boolean | BigInt | Symbol
>constructor : Function
>String : StringConstructor
var2; // String
>var2 : String
}
if (var2.constructor === Number) {
>var2.constructor === Number : boolean
>var2.constructor : Function
>var2 : String | Number | Boolean | BigInt | Symbol
>constructor : Function
>Number : NumberConstructor
var2; // Number
>var2 : Number
}
if (var2.constructor === Boolean) {
>var2.constructor === Boolean : boolean
>var2.constructor : Function
>var2 : String | Number | Boolean | BigInt | Symbol
>constructor : Function
>Boolean : BooleanConstructor
var2; // Boolean
>var2 : Boolean
}
if (var2.constructor === Symbol) {
>var2.constructor === Symbol : boolean
>var2.constructor : Function
>var2 : String | Number | Boolean | BigInt | Symbol
>constructor : Function
>Symbol : SymbolConstructor
var2; // Symbol
>var2 : Symbol
}
if (var2.constructor === BigInt) {
>var2.constructor === BigInt : boolean
>var2.constructor : Function
>var2 : String | Number | Boolean | BigInt | Symbol
>constructor : Function
>BigInt : BigIntConstructor
var2; // BigInt
>var2 : BigInt
}
|