fde9c7f555
* For x && typeof x === 'object', narrow x to just type object * Add tests * Allow arbitrary nesting / add comments * Add additional tests
31 lines
707 B
TypeScript
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');
|
|
}
|