@@ -3019,7 +3019,7 @@ namespace ts {
3019
3019
};
3020
3020
}
3021
3021
3022
- function typeToTypeNodeHelper(type: Type, context: NodeBuilderContext): TypeNode | undefined {
3022
+ function typeToTypeNodeHelper(type: Type, context: NodeBuilderContext): TypeNode {
3023
3023
if (cancellationToken && cancellationToken.throwIfCancellationRequested) {
3024
3024
cancellationToken.throwIfCancellationRequested();
3025
3025
}
@@ -3028,7 +3028,7 @@ namespace ts {
3028
3028
3029
3029
if (!type) {
3030
3030
context.encounteredError = true;
3031
- return undefined;
3031
+ return undefined!; // TODO: GH#18217
3032
3032
}
3033
3033
3034
3034
if (type.flags & TypeFlags.Any) {
@@ -3133,7 +3133,7 @@ namespace ts {
3133
3133
if (!context.encounteredError && !(context.flags & NodeBuilderFlags.AllowEmptyUnionOrIntersection)) {
3134
3134
context.encounteredError = true;
3135
3135
}
3136
- return undefined;
3136
+ return undefined!; // TODO: GH#18217
3137
3137
}
3138
3138
}
3139
3139
if (objectFlags & (ObjectFlags.Anonymous | ObjectFlags.Mapped)) {
@@ -3143,29 +3143,29 @@ namespace ts {
3143
3143
}
3144
3144
if (type.flags & TypeFlags.Index) {
3145
3145
const indexedType = (<IndexType>type).type;
3146
- const indexTypeNode = typeToTypeNodeHelper(indexedType, context)!; // TODO: GH#18217
3146
+ const indexTypeNode = typeToTypeNodeHelper(indexedType, context);
3147
3147
return createTypeOperatorNode(indexTypeNode);
3148
3148
}
3149
3149
if (type.flags & TypeFlags.IndexedAccess) {
3150
- const objectTypeNode = typeToTypeNodeHelper((<IndexedAccessType>type).objectType, context)!; // TODO: GH#18217
3151
- const indexTypeNode = typeToTypeNodeHelper((<IndexedAccessType>type).indexType, context)! ;
3150
+ const objectTypeNode = typeToTypeNodeHelper((<IndexedAccessType>type).objectType, context);
3151
+ const indexTypeNode = typeToTypeNodeHelper((<IndexedAccessType>type).indexType, context);
3152
3152
return createIndexedAccessTypeNode(objectTypeNode, indexTypeNode);
3153
3153
}
3154
3154
if (type.flags & TypeFlags.Conditional) {
3155
- const checkTypeNode = typeToTypeNodeHelper((<ConditionalType>type).checkType, context)!; // TODO: GH#18217
3155
+ const checkTypeNode = typeToTypeNodeHelper((<ConditionalType>type).checkType, context);
3156
3156
const saveInferTypeParameters = context.inferTypeParameters;
3157
3157
context.inferTypeParameters = (<ConditionalType>type).root.inferTypeParameters;
3158
- const extendsTypeNode = typeToTypeNodeHelper((<ConditionalType>type).extendsType, context)! ;
3158
+ const extendsTypeNode = typeToTypeNodeHelper((<ConditionalType>type).extendsType, context);
3159
3159
context.inferTypeParameters = saveInferTypeParameters;
3160
- const trueTypeNode = typeToTypeNodeHelper(getTrueTypeFromConditionalType(<ConditionalType>type), context)! ;
3161
- const falseTypeNode = typeToTypeNodeHelper(getFalseTypeFromConditionalType(<ConditionalType>type), context)! ;
3160
+ const trueTypeNode = typeToTypeNodeHelper(getTrueTypeFromConditionalType(<ConditionalType>type), context);
3161
+ const falseTypeNode = typeToTypeNodeHelper(getFalseTypeFromConditionalType(<ConditionalType>type), context);
3162
3162
return createConditionalTypeNode(checkTypeNode, extendsTypeNode, trueTypeNode, falseTypeNode);
3163
3163
}
3164
3164
if (type.flags & TypeFlags.Substitution) {
3165
3165
return typeToTypeNodeHelper((<SubstitutionType>type).typeVariable, context);
3166
3166
}
3167
3167
3168
- Debug.fail("Should be unreachable.");
3168
+ return Debug.fail("Should be unreachable.");
3169
3169
3170
3170
function createMappedTypeNodeFromType(type: MappedType) {
3171
3171
Debug.assert(!!(type.flags & TypeFlags.Object));
@@ -3281,15 +3281,15 @@ namespace ts {
3281
3281
return entityName;
3282
3282
}
3283
3283
3284
- function typeReferenceToTypeNode(type: TypeReference) {
3284
+ function typeReferenceToTypeNode(type: TypeReference): TypeNode {
3285
3285
const typeArguments: Type[] = type.typeArguments || emptyArray;
3286
3286
if (type.target === globalArrayType) {
3287
3287
if (context.flags & NodeBuilderFlags.WriteArrayAsGenericType) {
3288
- const typeArgumentNode = typeToTypeNodeHelper(typeArguments[0], context)! ;
3288
+ const typeArgumentNode = typeToTypeNodeHelper(typeArguments[0], context);
3289
3289
return createTypeReferenceNode("Array", [typeArgumentNode]);
3290
3290
}
3291
3291
3292
- const elementType = typeToTypeNodeHelper(typeArguments[0], context)! ;
3292
+ const elementType = typeToTypeNodeHelper(typeArguments[0], context);
3293
3293
return createArrayTypeNode(elementType);
3294
3294
}
3295
3295
else if (type.target.objectFlags & ObjectFlags.Tuple) {
@@ -3303,7 +3303,7 @@ namespace ts {
3303
3303
return createTupleTypeNode([]);
3304
3304
}
3305
3305
context.encounteredError = true;
3306
- return undefined;
3306
+ return undefined!; // TODO: GH#18217
3307
3307
}
3308
3308
else if (context.flags & NodeBuilderFlags.WriteClassExpressionAsTypeLiteral &&
3309
3309
type.symbol.valueDeclaration &&
@@ -3498,7 +3498,7 @@ namespace ts {
3498
3498
/*questionToken*/ undefined,
3499
3499
indexerTypeNode,
3500
3500
/*initializer*/ undefined);
3501
- const typeNode = typeToTypeNodeHelper(indexInfo.type || anyType, context)!; // TODO: GH#18217
3501
+ const typeNode = typeToTypeNodeHelper(indexInfo.type || anyType, context);
3502
3502
if (!indexInfo.type && !(context.flags & NodeBuilderFlags.AllowEmptyIndexInfoType)) {
3503
3503
context.encounteredError = true;
3504
3504
}
@@ -3513,7 +3513,7 @@ namespace ts {
3513
3513
let typeParameters: TypeParameterDeclaration[] | undefined;
3514
3514
let typeArguments: TypeNode[] | undefined;
3515
3515
if (context.flags & NodeBuilderFlags.WriteTypeArgumentsOfSignature && signature.target && signature.mapper && signature.target.typeParameters) {
3516
- typeArguments = signature.target.typeParameters.map(parameter => typeToTypeNodeHelper(instantiateType(parameter, signature.mapper!), context)!); // TODO: GH#18217
3516
+ typeArguments = signature.target.typeParameters.map(parameter => typeToTypeNodeHelper(instantiateType(parameter, signature.mapper!), context));
3517
3517
}
3518
3518
else {
3519
3519
typeParameters = signature.typeParameters && signature.typeParameters.map(parameter => typeParameterToDeclaration(parameter, context));
@@ -3531,7 +3531,7 @@ namespace ts {
3531
3531
const parameterName = typePredicate.kind === TypePredicateKind.Identifier ?
3532
3532
setEmitFlags(createIdentifier(typePredicate.parameterName), EmitFlags.NoAsciiEscaping) :
3533
3533
createThisTypeNode();
3534
- const typeNode = typeToTypeNodeHelper(typePredicate.type, context)! ;
3534
+ const typeNode = typeToTypeNodeHelper(typePredicate.type, context);
3535
3535
returnTypeNode = createTypePredicateNode(parameterName, typeNode);
3536
3536
}
3537
3537
else {
0 commit comments