(type)
| 52678 | return typeToTypeNodeHelper(type, context); |
| 52679 | } |
| 52680 | function createMappedTypeNodeFromType(type) { |
| 52681 | ts.Debug.assert(!!(type.flags & 524288 /* TypeFlags.Object */)); |
| 52682 | var readonlyToken = type.declaration.readonlyToken ? ts.factory.createToken(type.declaration.readonlyToken.kind) : undefined; |
| 52683 | var questionToken = type.declaration.questionToken ? ts.factory.createToken(type.declaration.questionToken.kind) : undefined; |
| 52684 | var appropriateConstraintTypeNode; |
| 52685 | var newTypeVariable; |
| 52686 | if (isMappedTypeWithKeyofConstraintDeclaration(type)) { |
| 52687 | // We have a { [P in keyof T]: X } |
| 52688 | // We do this to ensure we retain the toplevel keyof-ness of the type which may be lost due to keyof distribution during `getConstraintTypeFromMappedType` |
| 52689 | if (!(getModifiersTypeFromMappedType(type).flags & 262144 /* TypeFlags.TypeParameter */) && context.flags & 4 /* NodeBuilderFlags.GenerateNamesForShadowedTypeParams */) { |
| 52690 | var newParam = createTypeParameter(createSymbol(262144 /* SymbolFlags.TypeParameter */, "T")); |
| 52691 | var name = typeParameterToName(newParam, context); |
| 52692 | newTypeVariable = ts.factory.createTypeReferenceNode(name); |
| 52693 | } |
| 52694 | appropriateConstraintTypeNode = ts.factory.createTypeOperatorNode(140 /* SyntaxKind.KeyOfKeyword */, newTypeVariable || typeToTypeNodeHelper(getModifiersTypeFromMappedType(type), context)); |
| 52695 | } |
| 52696 | else { |
| 52697 | appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type), context); |
| 52698 | } |
| 52699 | var typeParameterNode = typeParameterToDeclarationWithConstraint(getTypeParameterFromMappedType(type), context, appropriateConstraintTypeNode); |
| 52700 | var nameTypeNode = type.declaration.nameType ? typeToTypeNodeHelper(getNameTypeFromMappedType(type), context) : undefined; |
| 52701 | var templateTypeNode = typeToTypeNodeHelper(removeMissingType(getTemplateTypeFromMappedType(type), !!(getMappedTypeModifiers(type) & 4 /* MappedTypeModifiers.IncludeOptional */)), context); |
| 52702 | var mappedTypeNode = ts.factory.createMappedTypeNode(readonlyToken, typeParameterNode, nameTypeNode, questionToken, templateTypeNode, /*members*/ undefined); |
| 52703 | context.approximateLength += 10; |
| 52704 | var result = ts.setEmitFlags(mappedTypeNode, 1 /* EmitFlags.SingleLine */); |
| 52705 | if (isMappedTypeWithKeyofConstraintDeclaration(type) && !(getModifiersTypeFromMappedType(type).flags & 262144 /* TypeFlags.TypeParameter */) && context.flags & 4 /* NodeBuilderFlags.GenerateNamesForShadowedTypeParams */) { |
| 52706 | // homomorphic mapped type with a non-homomorphic naive inlining |
| 52707 | // wrap it with a conditional like `SomeModifiersType extends infer U ? {..the mapped type...} : never` to ensure the resulting |
| 52708 | // type stays homomorphic |
| 52709 | return ts.factory.createConditionalTypeNode(typeToTypeNodeHelper(getModifiersTypeFromMappedType(type), context), ts.factory.createInferTypeNode(ts.factory.createTypeParameterDeclaration(/*modifiers*/ undefined, ts.factory.cloneNode(newTypeVariable.typeName))), result, ts.factory.createKeywordTypeNode(143 /* SyntaxKind.NeverKeyword */)); |
| 52710 | } |
| 52711 | return result; |
| 52712 | } |
| 52713 | function createAnonymousTypeNode(type) { |
| 52714 | var _a; |
| 52715 | var typeId = type.id; |
no test coverage detected
searching dependent graphs…