Fixed display of optional and rest parameters created as result of combining union parameters (#55625)

This commit is contained in:
Mateusz Burzyński
2023-09-13 11:25:19 -07:00
committed by GitHub
parent 3f0c62bf02
commit 543d7ed00c
8 changed files with 141 additions and 10 deletions
+2 -1
View File
@@ -13202,12 +13202,13 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
const paramSymbol = createSymbol(
SymbolFlags.FunctionScopedVariable | (isOptional && !isRestParam ? SymbolFlags.Optional : 0),
paramName || `arg${i}` as __String,
isRestParam ? CheckFlags.RestParameter : isOptional ? CheckFlags.OptionalParameter : 0,
);
paramSymbol.links.type = isRestParam ? createArrayType(unionParamType) : unionParamType;
params[i] = paramSymbol;
}
if (needsExtraRestElement) {
const restParamSymbol = createSymbol(SymbolFlags.FunctionScopedVariable, "args" as __String);
const restParamSymbol = createSymbol(SymbolFlags.FunctionScopedVariable, "args" as __String, CheckFlags.RestParameter);
restParamSymbol.links.type = createArrayType(getTypeAtPosition(shorter, longestCount));
if (shorter === right) {
restParamSymbol.links.type = instantiateType(restParamSymbol.links.type, mapper);