58 lines
1.8 KiB
Plaintext
58 lines
1.8 KiB
Plaintext
|
tests/cases/conformance/es2021/logicalAssignment/logicalAssignment4.ts(39,13): error TS2532: Object is possibly 'undefined'.
|
||
|
tests/cases/conformance/es2021/logicalAssignment/logicalAssignment4.ts(45,13): error TS2532: Object is possibly 'undefined'.
|
||
|
|
||
|
|
||
|
==== tests/cases/conformance/es2021/logicalAssignment/logicalAssignment4.ts (2 errors) ====
|
||
|
function foo1(results: number[] | undefined) {
|
||
|
(results ||= []).push(100);
|
||
|
}
|
||
|
|
||
|
function foo2(results: number[] | undefined) {
|
||
|
(results ??= []).push(100);
|
||
|
}
|
||
|
|
||
|
function foo3(results: number[] | undefined) {
|
||
|
results ||= [];
|
||
|
results.push(100);
|
||
|
}
|
||
|
|
||
|
function foo4(results: number[] | undefined) {
|
||
|
results ??= [];
|
||
|
results.push(100);
|
||
|
}
|
||
|
|
||
|
interface ThingWithOriginal {
|
||
|
name: string;
|
||
|
original?: ThingWithOriginal
|
||
|
}
|
||
|
declare const v: number
|
||
|
function doSomethingWithAlias(thing: ThingWithOriginal | undefined, defaultValue: ThingWithOriginal | undefined) {
|
||
|
if (v === 1) {
|
||
|
if (thing &&= thing.original) {
|
||
|
thing.name;
|
||
|
}
|
||
|
}
|
||
|
else if (v === 2) {
|
||
|
if (thing &&= defaultValue) {
|
||
|
thing.name;
|
||
|
defaultValue.name
|
||
|
}
|
||
|
}
|
||
|
else if (v === 3) {
|
||
|
if (thing ||= defaultValue) {
|
||
|
thing.name;
|
||
|
defaultValue.name;
|
||
|
~~~~~~~~~~~~
|
||
|
!!! error TS2532: Object is possibly 'undefined'.
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
if (thing ??= defaultValue) {
|
||
|
thing.name;
|
||
|
defaultValue.name;
|
||
|
~~~~~~~~~~~~
|
||
|
!!! error TS2532: Object is possibly 'undefined'.
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|