mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
In JS, constructor functions infer from call+construct (#28353)
* constructor functions infer from call+construct Also fix an incorrect combining of inferences for rest parameters: the inferred types will be arrays in the body of the function and the arguments from outside the function will be the element type. * All functions infer from call+construct contexts
This commit is contained in:
committed by
GitHub
parent
1089424035
commit
ea8ccc2ce4
@@ -283,6 +283,7 @@ namespace ts {
|
||||
getNumberType: () => numberType,
|
||||
createPromiseType,
|
||||
createArrayType,
|
||||
getElementTypeOfArrayType,
|
||||
getBooleanType: () => booleanType,
|
||||
getFalseType: (fresh?) => fresh ? falseType : regularFalseType,
|
||||
getTrueType: (fresh?) => fresh ? trueType : regularTrueType,
|
||||
@@ -13222,6 +13223,10 @@ namespace ts {
|
||||
return !!(getObjectFlags(type) & ObjectFlags.Reference) && (<TypeReference>type).target === globalReadonlyArrayType;
|
||||
}
|
||||
|
||||
function getElementTypeOfArrayType(type: Type): Type | undefined {
|
||||
return isArrayType(type) && (type as TypeReference).typeArguments ? (type as TypeReference).typeArguments![0] : undefined;
|
||||
}
|
||||
|
||||
function isArrayLikeType(type: Type): boolean {
|
||||
// A type is array-like if it is a reference to the global Array or global ReadonlyArray type,
|
||||
// or if it is not the undefined or null type and if it is assignable to ReadonlyArray<any>
|
||||
|
||||
@@ -3141,6 +3141,7 @@ namespace ts {
|
||||
/* @internal */ getNeverType(): Type;
|
||||
/* @internal */ getUnionType(types: Type[], subtypeReduction?: UnionReduction): Type;
|
||||
/* @internal */ createArrayType(elementType: Type): Type;
|
||||
/* @internal */ getElementTypeOfArrayType(arrayType: Type): Type | undefined;
|
||||
/* @internal */ createPromiseType(type: Type): Type;
|
||||
|
||||
/* @internal */ createAnonymousType(symbol: Symbol, members: SymbolTable, callSignatures: Signature[], constructSignatures: Signature[], stringIndexInfo: IndexInfo | undefined, numberIndexInfo: IndexInfo | undefined): Type;
|
||||
|
||||
Reference in New Issue
Block a user