mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-06 02:33:53 -06:00
fix(42133): fix instantiated undefined type from JS initializer (#42662)
This commit is contained in:
parent
c7bac6f2e6
commit
475036950e
@ -19489,8 +19489,8 @@ namespace ts {
|
||||
}
|
||||
|
||||
function isEmptyArrayLiteralType(type: Type): boolean {
|
||||
const elementType = isArrayType(type) ? getTypeArguments(type)[0] : undefined;
|
||||
return elementType === undefinedWideningType || elementType === implicitNeverType;
|
||||
const elementType = getElementTypeOfArrayType(type);
|
||||
return strictNullChecks ? elementType === implicitNeverType : elementType === undefinedWideningType;
|
||||
}
|
||||
|
||||
function isTupleLikeType(type: Type): boolean {
|
||||
|
||||
@ -72,4 +72,11 @@ tests/cases/conformance/salsa/a.js(37,5): error TS2322: Type '"error"' is not as
|
||||
u = 'ok'
|
||||
|
||||
l.push('ok')
|
||||
|
||||
/** @type {(v: unknown) => v is undefined} */
|
||||
const isUndef = v => v === undefined;
|
||||
const e = [1, undefined];
|
||||
|
||||
// should be undefined[]
|
||||
const g = e.filter(isUndef);
|
||||
|
||||
@ -175,3 +175,22 @@ l.push('ok')
|
||||
>l : Symbol(l, Decl(a.js, 45, 3))
|
||||
>push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --))
|
||||
|
||||
/** @type {(v: unknown) => v is undefined} */
|
||||
const isUndef = v => v === undefined;
|
||||
>isUndef : Symbol(isUndef, Decl(a.js, 55, 5))
|
||||
>v : Symbol(v, Decl(a.js, 55, 15))
|
||||
>v : Symbol(v, Decl(a.js, 55, 15))
|
||||
>undefined : Symbol(undefined)
|
||||
|
||||
const e = [1, undefined];
|
||||
>e : Symbol(e, Decl(a.js, 56, 5))
|
||||
>undefined : Symbol(undefined)
|
||||
|
||||
// should be undefined[]
|
||||
const g = e.filter(isUndef);
|
||||
>g : Symbol(g, Decl(a.js, 59, 5))
|
||||
>e.filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
|
||||
>e : Symbol(e, Decl(a.js, 56, 5))
|
||||
>filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
|
||||
>isUndef : Symbol(isUndef, Decl(a.js, 55, 5))
|
||||
|
||||
|
||||
@ -239,3 +239,27 @@ l.push('ok')
|
||||
>push : (...items: any[]) => number
|
||||
>'ok' : "ok"
|
||||
|
||||
/** @type {(v: unknown) => v is undefined} */
|
||||
const isUndef = v => v === undefined;
|
||||
>isUndef : (v: unknown) => v is undefined
|
||||
>v => v === undefined : (v: unknown) => v is undefined
|
||||
>v : unknown
|
||||
>v === undefined : boolean
|
||||
>v : unknown
|
||||
>undefined : undefined
|
||||
|
||||
const e = [1, undefined];
|
||||
>e : (number | undefined)[]
|
||||
>[1, undefined] : (number | undefined)[]
|
||||
>1 : 1
|
||||
>undefined : undefined
|
||||
|
||||
// should be undefined[]
|
||||
const g = e.filter(isUndef);
|
||||
>g : undefined[]
|
||||
>e.filter(isUndef) : undefined[]
|
||||
>e.filter : { <S extends number | undefined>(predicate: (value: number | undefined, index: number, array: (number | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | undefined, index: number, array: (number | undefined)[]) => unknown, thisArg?: any): (number | undefined)[]; }
|
||||
>e : (number | undefined)[]
|
||||
>filter : { <S extends number | undefined>(predicate: (value: number | undefined, index: number, array: (number | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | undefined, index: number, array: (number | undefined)[]) => unknown, thisArg?: any): (number | undefined)[]; }
|
||||
>isUndef : (v: unknown) => v is undefined
|
||||
|
||||
|
||||
@ -57,3 +57,10 @@ u = {}
|
||||
u = 'ok'
|
||||
|
||||
l.push('ok')
|
||||
|
||||
/** @type {(v: unknown) => v is undefined} */
|
||||
const isUndef = v => v === undefined;
|
||||
const e = [1, undefined];
|
||||
|
||||
// should be undefined[]
|
||||
const g = e.filter(isUndef);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user