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
|
=== tests/cases/compiler/controlFlowNullTypeAndLiteral.ts ===
// Repros from #23771
const myNull: null = null;
>myNull : null
>null : null
>null : null
const objWithValMaybeNull: { val: number | null } = { val: 1 };
>objWithValMaybeNull : { val: number | null; }
>val : number | null
>null : null
>{ val: 1 } : { val: number; }
>val : number
>1 : 1
const addOne = function (num: number) {
>addOne : (num: number) => number
>function (num: number) { return num + 1;} : (num: number) => number
>num : number
return num + 1;
>num + 1 : number
>num : number
>1 : 1
}
if (objWithValMaybeNull.val !== null)
>objWithValMaybeNull.val !== null : boolean
>objWithValMaybeNull.val : number | null
>objWithValMaybeNull : { val: number | null; }
>val : number | null
>null : null
addOne(objWithValMaybeNull.val);
>addOne(objWithValMaybeNull.val) : number
>addOne : (num: number) => number
>objWithValMaybeNull.val : number
>objWithValMaybeNull : { val: number | null; }
>val : number
if (objWithValMaybeNull.val !== myNull)
>objWithValMaybeNull.val !== myNull : boolean
>objWithValMaybeNull.val : number | null
>objWithValMaybeNull : { val: number | null; }
>val : number | null
>myNull : null
addOne(objWithValMaybeNull.val);
>addOne(objWithValMaybeNull.val) : number
>addOne : (num: number) => number
>objWithValMaybeNull.val : number
>objWithValMaybeNull : { val: number | null; }
>val : number
if (objWithValMaybeNull.val === null)
>objWithValMaybeNull.val === null : boolean
>objWithValMaybeNull.val : number | null
>objWithValMaybeNull : { val: number | null; }
>val : number | null
>null : null
addOne(objWithValMaybeNull.val); // Error
>addOne(objWithValMaybeNull.val) : number
>addOne : (num: number) => number
>objWithValMaybeNull.val : null
>objWithValMaybeNull : { val: number | null; }
>val : null
if (objWithValMaybeNull.val === myNull)
>objWithValMaybeNull.val === myNull : boolean
>objWithValMaybeNull.val : number | null
>objWithValMaybeNull : { val: number | null; }
>val : number | null
>myNull : null
addOne(objWithValMaybeNull.val); // Error
>addOne(objWithValMaybeNull.val) : number
>addOne : (num: number) => number
>objWithValMaybeNull.val : null
>objWithValMaybeNull : { val: number | null; }
>val : null
function f(x: number | null) {
>f : (x: number | null) => void
>x : number | null
>null : null
if(x === myNull) {
>x === myNull : boolean
>x : number | null
>myNull : null
const s: string = x; // Error
>s : string
>x : null
}
}
|