TypeScript/tests/cases/compiler/narrowingTruthyObject.ts
Anders Hejlsberg fde9c7f555
Narrowing from truthy unknown to object (#37507)
* For x && typeof x === 'object', narrow x to just type object

* Add tests

* Allow arbitrary nesting / add comments

* Add additional tests
2020-03-20 17:09:24 -07:00

31 lines
707 B
TypeScript

// @strict: true
function foo(x: unknown, b: boolean) {
if (typeof x === 'object') {
x.toString();
}
if (typeof x === 'object' && x) {
x.toString();
}
if (x && typeof x === 'object') {
x.toString();
}
if (b && x && typeof x === 'object') {
x.toString();
}
if (x && b && typeof x === 'object') {
x.toString();
}
if (x && b && b && typeof x === 'object') {
x.toString();
}
if (b && b && x && b && b && typeof x === 'object') {
x.toString();
}
}
// Repro from #36870
function f1(x: unknown): any {
return x && typeof x === 'object' && x.hasOwnProperty('x');
}