YousefED / typescript-json-schema

Generate json-schema from your Typescript sources
BSD 3-Clause "New" or "Revised" License
3.17k stars 323 forks source link

Unsupported type `[keyof T]` #516

Closed Theartbug closed 1 year ago

Theartbug commented 2 years ago

My team is trying to implement the AtLeastOne<T> generic type created by the Microsoft Azure team: https://learn.microsoft.com/en-us/javascript/api/@azure/keyvault-certificates/requireatleastone?view=azure-node-latest

type RequireAtLeastOne<T> = { [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>; }[keyof T]

We've poked around a bit and notice when we remove [keyof T] at the end, it can generate the schemas.json. We are wondering if it has something to do with recursion?

The output error text is too long to retrieve full logs, but it looks like this:

....
aliasTypeArguments: [Array],
            constraintType: [TypeObject],
            resolvedApparentType: [Circular *24],
            modifiersType: [TypeObject]
          }
        },
        <ref *25> TypeObject {
          checker: {
            getNodeCount: [Function: getNodeCount],
            getIdentifierCount: [Function: getIdentifierCount],
            getSymbolCount: [Function: getSymbolCount],
            getTypeCount: [Function: getTypeCount],
            getInstantiationCount: [Function: getInstantiationCount],
            getRelationCacheSizes: [Function: getRelationCacheSizes],
            isUndefinedSymbol: [Function: isUndefinedSymbol],
            isArgumentsSymbol: [Function: isArgumentsSymbol],
            isUnknownSymbol: [Function: isUnknownSymbol],
            getMergedSymbol: [Function: getMergedSymbol],
            getDiagnostics: [Function: getDiagnostics],
            getGlobalDiagnostics: [Function: getGlobalDiagnostics],
            getRecursionIdentity: [Function: getRecursionIdentity],
            getUnmatchedProperties: [Function: getUnmatchedProperties],
            getTypeOfSymbolAtLocation: [Function: getTypeOfSymbolAtLocation],
            getTypeOfSymbol: [Function: getTypeOfSymbol],
            getSymbolsOfParameterPropertyDeclaration: [Function: getSymbolsOfParameterPropertyDeclaration],
            getDeclaredTypeOfSymbol: [Function: getDeclaredTypeOfSymbol],
            getPropertiesOfType: [Function: getPropertiesOfType],
            getPropertyOfType: [Function: getPropertyOfType],
            getPrivateIdentifierPropertyOfType: [Function: getPrivateIdentifierPropertyOfType],
            getTypeOfPropertyOfType: [Function: getTypeOfPropertyOfType],
            getIndexInfoOfType: [Function: getIndexInfoOfType],
            getIndexInfosOfType: [Function: getIndexInfosOfType],
            getSignaturesOfType: [Function: getSignaturesOfType],
            getIndexTypeOfType: [Function: getIndexTypeOfType],
            getIndexType: [Function: getIndexType],
            getBaseTypes: [Function: getBaseTypes],
            getBaseTypeOfLiteralType: [Function: getBaseTypeOfLiteralType],
            getWidenedType: [Function: getWidenedType],
            getTypeFromTypeNode: [Function: getTypeFromTypeNode],
            getParameterType: [Function: getTypeAtPosition],
            getParameterIdentifierNameAtPosition: [Function: getParameterIdentifierNameAtPosition],
            getPromisedTypeOfPromise: [Function: getPromisedTypeOfPromise],
            getAwaitedType: [Function: getAwaitedType],
            getReturnTypeOfSignature: [Function: getReturnTypeOfSignature],
            isNullableType: [Function: isNullableType],
            getNullableType: [Function: getNullableType],
            getNonNullableType: [Function: getNonNullableType],
            getNonOptionalType: [Function: removeOptionalTypeMarker],
            getTypeArguments: [Function: getTypeArguments],
            typeToTypeNode: [Function: typeToTypeNode],
            indexInfoToIndexSignatureDeclaration: [Function: indexInfoToIndexSignatureDeclaration],
            signatureToSignatureDeclaration: [Function: signatureToSignatureDeclaration],
            symbolToEntityName: [Function: symbolToEntityName],
            symbolToExpression: [Function: symbolToExpression],
            symbolToTypeParameterDeclarations: [Function: symbolToTypeParameterDeclarations],
            symbolToParameterDeclaration: [Function: symbolToParameterDeclaration],
            typeParameterToDeclaration: [Function: typeParameterToDeclaration],
            getSymbolsInScope: [Function: getSymbolsInScope],
            getSymbolAtLocation: [Function: getSymbolAtLocation],
            getIndexInfosAtLocation: [Function: getIndexInfosAtLocation],
            getShorthandAssignmentValueSymbol: [Function: getShorthandAssignmentValueSymbol],
            getExportSpecifierLocalTargetSymbol: [Function: getExportSpecifierLocalTargetSymbol],
            getExportSymbolOfSymbol: [Function: getExportSymbolOfSymbol],
            getTypeAtLocation: [Function: getTypeAtLocation],
            getTypeOfAssignmentPattern: [Function: getTypeOfAssignmentPattern],
            getPropertySymbolOfDestructuringAssignment: [Function: getPropertySymbolOfDestructuringAssignment],
            signatureToString: [Function: signatureToString],
            typeToString: [Function: typeToString],
            symbolToString: [Function: symbolToString],
            typePredicateToString: [Function: typePredicateToString],
            writeSignature: [Function: writeSignature],
            writeType: [Function: writeType],
            writeSymbol: [Function: writeSymbol],
            writeTypePredicate: [Function: writeTypePredicate],
            getAugmentedPropertiesOfType: [Function: getAugmentedPropertiesOfType],
            getRootSymbols: [Function: getRootSymbols],
            getSymbolOfExpando: [Function: getSymbolOfExpando],
            getContextualType: [Function: getContextualType],
            getContextualTypeForObjectLiteralElement: [Function: getContextualTypeForObjectLiteralElement],
            getContextualTypeForArgumentAtIndex: [Function: getContextualTypeForArgumentAtIndex],
            getContextualTypeForJsxAttribute: [Function: getContextualTypeForJsxAttribute],
            isContextSensitive: [Function: isContextSensitive],
            getTypeOfPropertyOfContextualType: [Function: getTypeOfPropertyOfContextualType],
            getFullyQualifiedName: [Function: getFullyQualifiedName],
            getResolvedSignature: [Function: getResolvedSignature],
            getResolvedSignatureForStringLiteralCompletions: [Function: getResolvedSignatureForStringLiteralCompletions],
            getResolvedSignatureForSignatureHelp: [Function: getResolvedSignatureForSignatureHelp],
            getExpandedParameters: [Function: getExpandedParameters],
            hasEffectiveRestParameter: [Function: hasEffectiveRestParameter],
            containsArgumentsReference: [Function: containsArgumentsReference],
            getConstantValue: [Function: getConstantValue],
            isValidPropertyAccess: [Function: isValidPropertyAccess],
            isValidPropertyAccessForCompletions: [Function: isValidPropertyAccessForCompletions],
            getSignatureFromDeclaration: [Function: getSignatureFromDeclaration],
            isImplementationOfOverload: [Function: isImplementationOfOverload],
            getImmediateAliasedSymbol: [Function: getImmediateAliasedSymbol],
            getAliasedSymbol: [Function: resolveAlias],
            getEmitResolver: [Function: getEmitResolver],
            getExportsOfModule: [Function: getExportsOfModuleAsArray],
            getExportsAndPropertiesOfModule: [Function: getExportsAndPropertiesOfModule],
            forEachExportAndPropertyOfModule: [Function: forEachExportAndPropertyOfModule],
            getSymbolWalker: [Function: getSymbolWalker],
            getAmbientModules: [Function: getAmbientModules],
            getJsxIntrinsicTagNamesAt: [Function: getJsxIntrinsicTagNamesAt],
            isOptionalParameter: [Function: isOptionalParameter],
            tryGetMemberInModuleExports: [Function: tryGetMemberInModuleExports],
            tryGetMemberInModuleExportsAndProperties: [Function: tryGetMemberInModuleExportsAndProperties],
            tryFindAmbientModule: [Function: tryFindAmbientModule],
            tryFindAmbientModuleWithoutAugmentations: [Function: tryFindAmbientModuleWithoutAugmentations],
            getApparentType: [Function: getApparentType],
            getUnionType: [Function: getUnionType],
            isTypeAssignableTo: [Function: isTypeAssignableTo],
            createAnonymousType: [Function: createAnonymousType],
            createSignature: [Function: createSignature],
            createSymbol: [Function: createSymbol],
            createIndexInfo: [Function: createIndexInfo],
            getAnyType: [Function: getAnyType],
            getStringType: [Function: getStringType],
            getNumberType: [Function: getNumberType],
            createPromiseType: [Function: createPromiseType],
            createArrayType: [Function: createArrayType],
            getElementTypeOfArrayType: [Function: getElementTypeOfArrayType],
            getBooleanType: [Function: getBooleanType],
            getFalseType: [Function: getFalseType],
            getTrueType: [Function: getTrueType],
            getVoidType: [Function: getVoidType],
            getUndefinedType: [Function: getUndefinedType],
            getNullType: [Function: getNullType],
            getESSymbolType: [Function: getESSymbolType],
            getNeverType: [Function: getNeverType],
            getOptionalType: [Function: getOptionalType],
            getPromiseType: [Function: getPromiseType],
            getPromiseLikeType: [Function: getPromiseLikeType],
            isSymbolAccessible: [Function: isSymbolAccessible],
            isArrayType: [Function: isArrayType],
            isTupleType: [Function: isTupleType],
            isArrayLikeType: [Function: isArrayLikeType],
            isTypeInvalidDueToUnionDiscriminant: [Function: isTypeInvalidDueToUnionDiscriminant],
            getExactOptionalProperties: [Function: getExactOptionalProperties],
            getAllPossiblePropertiesOfTypes: [Function: getAllPossiblePropertiesOfTypes],
            getSuggestedSymbolForNonexistentProperty: [Function: getSuggestedSymbolForNonexistentProperty],
            getSuggestionForNonexistentProperty: [Function: getSuggestionForNonexistentProperty],
            getSuggestedSymbolForNonexistentJSXAttribute: [Function: getSuggestedSymbolForNonexistentJSXAttribute],
            getSuggestedSymbolForNonexistentSymbol: [Function: getSuggestedSymbolForNonexistentSymbol],
            getSuggestionForNonexistentSymbol: [Function: getSuggestionForNonexistentSymbol],
            getSuggestedSymbolForNonexistentModule: [Function: getSuggestedSymbolForNonexistentModule],
            getSuggestionForNonexistentExport: [Function: getSuggestionForNonexistentExport],
            getSuggestedSymbolForNonexistentClassMember: [Function: getSuggestedSymbolForNonexistentClassMember],
            getBaseConstraintOfType: [Function: getBaseConstraintOfType],
            getDefaultFromTypeParameter: [Function: getDefaultFromTypeParameter],
            resolveName: [Function: resolveName],
            getJsxNamespace: [Function: getJsxNamespace],
            getJsxFragmentFactory: [Function: getJsxFragmentFactory],
            getAccessibleSymbolChain: [Function: getAccessibleSymbolChain],
            getTypePredicateOfSignature: [Function: getTypePredicateOfSignature],
            resolveExternalModuleName: [Function: resolveExternalModuleName],
            resolveExternalModuleSymbol: [Function: resolveExternalModuleSymbol],
            tryGetThisTypeAt: [Function: tryGetThisTypeAt],
            getTypeArgumentConstraint: [Function: getTypeArgumentConstraint],
            getSuggestionDiagnostics: [Function: getSuggestionDiagnostics],
            runWithCancellationToken: [Function: runWithCancellationToken],
            getLocalTypeParametersOfClassOrInterfaceOrTypeAlias: [Function: getLocalTypeParametersOfClassOrInterfaceOrTypeAlias],
            isDeclarationVisible: [Function: isDeclarationVisible],
            isPropertyAccessible: [Function: isPropertyAccessible],
            getTypeOnlyAliasDeclaration: [Function: getTypeOnlyAliasDeclaration],
            getMemberOverrideModifierStatus: [Function: getMemberOverrideModifierStatus]
          },
          flags: 524288,
          id: 44041,
          objectFlags: 1572960,
          symbol: SymbolObject {
            flags: 2048,
            escapedName: '__type',
            declarations: [Array],
            members: Map(0) {}
          },
          members: Map(0) {},
          properties: [],
          callSignatures: [],
          constructSignatures: [],
          indexInfos: [],
          declaration: NodeObject {
            pos: 73564,
            end: 73597,
            flags: 16777216,
            modifierFlagsCache: 0,
            transformFlags: 1,
            parent: [NodeObject],
            kind: 195,
            readonlyToken: undefined,
            typeParameter: [NodeObject],
            nameType: undefined,
            questionToken: [TokenObject],
            type: [NodeObject],
            members: [Array],
            symbol: [SymbolObject],
            locals: [Map],
            nextContainer: [NodeObject],
            id: 1623
          },
          typeParameter: TypeObject {
            checker: [Object],
            flags: 262144,
            id: 44042,
            symbol: [SymbolObject],
            target: [TypeObject],
            mapper: [Object],
            constraint: [TypeObject],
            immediateBaseConstraint: [TypeObject],
            resolvedBaseConstraint: [TypeObject]
          },
          target: TypeObject {
            checker: [Object],
            flags: 524288,
            id: 823,
            objectFlags: 1572896,
            symbol: [SymbolObject],
            members: undefined,
            properties: undefined,
            callSignatures: undefined,
            constructSignatures: undefined,
            indexInfos: undefined,
            declaration: [NodeObject],
            aliasSymbol: [SymbolObject],
            aliasTypeArguments: [Array],
            typeParameter: [TypeObject],
            constraintType: [TypeObject],
            instantiations: [Map],
            templateType: [TypeObject]
          },
          mapper: { kind: 4, mapper1: [Object], mapper2: [Object] },
          aliasSymbol: SymbolObject {
            flags: 524288,
            escapedName: 'Partial',
            declarations: [Array],
            parent: undefined,
            id: 23761
          },
          aliasTypeArguments: [ [TypeObject] ],
          immediateBaseConstraint: [Circular *25],
          constraintType: TypeObject {
            checker: [Object],
            flags: 16777216,
            id: 44038,
            root: [Object],
            checkType: [TypeObject],
            extendsType: [TypeObject],
            mapper: [Object],
            combinedMapper: undefined,
            aliasSymbol: [SymbolObject],
            aliasTypeArguments: [Array],
            resolvedTrueType: [TypeObject],
            resolvedFalseType: [TypeObject],
            immediateBaseConstraint: [TypeObject]
          },
          resolvedApparentType: [Circular *25],
          modifiersType: <ref *26> TypeObject {
            checker: [Object],
            flags: 524288,
            id: 44039,
            objectFlags: 1572960,
            symbol: [SymbolObject],
            members: Map(0) {},
            properties: [],
            callSignatures: [],
            constructSignatures: [],
            indexInfos: [],
            declaration: [NodeObject],
            typeParameter: [TypeObject],
            target: [TypeObject],
            mapper: [Object],
            aliasSymbol: [SymbolObject],
            aliasTypeArguments: [Array],
            constraintType: [TypeObject],
            resolvedApparentType: [Circular *26],
            modifiersType: [TypeObject]
          }
        }
      ],
      aliasSymbol: undefined,
      aliasTypeArguments: undefined,
      resolvedApparentType: [Circular *27],
      resolvedProperties: [],
      members: Map(0) {},
      properties: [],
      callSignatures: [],
      constructSignatures: [],
      indexInfos: []
    },
    resolvedBaseConstraint: <ref *27> TypeObject {
      checker: {
        getNodeCount: [Function: getNodeCount],
        getIdentifierCount: [Function: getIdentifierCount],
        getSymbolCount: [Function: getSymbolCount],
        getTypeCount: [Function: getTypeCount],
        getInstantiationCount: [Function: getInstantiationCount],
        getRelationCacheSizes: [Function: getRelationCacheSizes],
        isUndefinedSymbol: [Function: isUndefinedSymbol],
        isArgumentsSymbol: [Function: isArgumentsSymbol],
        isUnknownSymbol: [Function: isUnknownSymbol],
        getMergedSymbol: [Function: getMergedSymbol],
        getDiagnostics: [Function: getDiagnostics],
        getGlobalDiagnostics: [Function: getGlobalDiagnostics],
        getRecursionIdentity: [Function: getRecursionIdentity],
        getUnmatchedProperties: [Function: getUnmatchedProperties],
        getTypeOfSymbolAtLocation: [Function: getTypeOfSymbolAtLocation],
        getTypeOfSymbol: [Function: getTypeOfSymbol],
        getSymbolsOfParameterPropertyDeclaration: [Function: getSymbolsOfParameterPropertyDeclaration],
        getDeclaredTypeOfSymbol: [Function: getDeclaredTypeOfSymbol],
        getPropertiesOfType: [Function: getPropertiesOfType],
        getPropertyOfType: [Function: getPropertyOfType],
        getPrivateIdentifierPropertyOfType: [Function: getPrivateIdentifierPropertyOfType],
        getTypeOfPropertyOfType: [Function: getTypeOfPropertyOfType],
        getIndexInfoOfType: [Function: getIndexInfoOfType],
        getIndexInfosOfType: [Function: getIndexInfosOfType],
        getSignaturesOfType: [Function: getSignaturesOfType],
        getIndexTypeOfType: [Function: getIndexTypeOfType],
        getIndexType: [Function: getIndexType],
        getBaseTypes: [Function: getBaseTypes],
        getBaseTypeOfLiteralType: [Function: getBaseTypeOfLiteralType],
        getWidenedType: [Function: getWidenedType],
        getTypeFromTypeNode: [Function: getTypeFromTypeNode],
        getParameterType: [Function: getTypeAtPosition],
        getParameterIdentifierNameAtPosition: [Function: getParameterIdentifierNameAtPosition],
        getPromisedTypeOfPromise: [Function: getPromisedTypeOfPromise],
        getAwaitedType: [Function: getAwaitedType],
        getReturnTypeOfSignature: [Function: getReturnTypeOfSignature],
        isNullableType: [Function: isNullableType],
        getNullableType: [Function: getNullableType],
        getNonNullableType: [Function: getNonNullableType],
        getNonOptionalType: [Function: removeOptionalTypeMarker],
        getTypeArguments: [Function: getTypeArguments],
        typeToTypeNode: [Function: typeToTypeNode],
        indexInfoToIndexSignatureDeclaration: [Function: indexInfoToIndexSignatureDeclaration],
        signatureToSignatureDeclaration: [Function: signatureToSignatureDeclaration],
        symbolToEntityName: [Function: symbolToEntityName],
        symbolToExpression: [Function: symbolToExpression],
        symbolToTypeParameterDeclarations: [Function: symbolToTypeParameterDeclarations],
        symbolToParameterDeclaration: [Function: symbolToParameterDeclaration],
        typeParameterToDeclaration: [Function: typeParameterToDeclaration],
        getSymbolsInScope: [Function: getSymbolsInScope],
        getSymbolAtLocation: [Function: getSymbolAtLocation],
        getIndexInfosAtLocation: [Function: getIndexInfosAtLocation],
        getShorthandAssignmentValueSymbol: [Function: getShorthandAssignmentValueSymbol],
        getExportSpecifierLocalTargetSymbol: [Function: getExportSpecifierLocalTargetSymbol],
        getExportSymbolOfSymbol: [Function: getExportSymbolOfSymbol],
        getTypeAtLocation: [Function: getTypeAtLocation],
        getTypeOfAssignmentPattern: [Function: getTypeOfAssignmentPattern],
        getPropertySymbolOfDestructuringAssignment: [Function: getPropertySymbolOfDestructuringAssignment],
        signatureToString: [Function: signatureToString],
        typeToString: [Function: typeToString],
        symbolToString: [Function: symbolToString],
        typePredicateToString: [Function: typePredicateToString],
        writeSignature: [Function: writeSignature],
        writeType: [Function: writeType],
        writeSymbol: [Function: writeSymbol],
        writeTypePredicate: [Function: writeTypePredicate],
        getAugmentedPropertiesOfType: [Function: getAugmentedPropertiesOfType],
        getRootSymbols: [Function: getRootSymbols],
        getSymbolOfExpando: [Function: getSymbolOfExpando],
        getContextualType: [Function: getContextualType],
        getContextualTypeForObjectLiteralElement: [Function: getContextualTypeForObjectLiteralElement],
        getContextualTypeForArgumentAtIndex: [Function: getContextualTypeForArgumentAtIndex],
        getContextualTypeForJsxAttribute: [Function: getContextualTypeForJsxAttribute],
        isContextSensitive: [Function: isContextSensitive],
        getTypeOfPropertyOfContextualType: [Function: getTypeOfPropertyOfContextualType],
        getFullyQualifiedName: [Function: getFullyQualifiedName],
        getResolvedSignature: [Function: getResolvedSignature],
        getResolvedSignatureForStringLiteralCompletions: [Function: getResolvedSignatureForStringLiteralCompletions],
        getResolvedSignatureForSignatureHelp: [Function: getResolvedSignatureForSignatureHelp],
        getExpandedParameters: [Function: getExpandedParameters],
        hasEffectiveRestParameter: [Function: hasEffectiveRestParameter],
        containsArgumentsReference: [Function: containsArgumentsReference],
        getConstantValue: [Function: getConstantValue],
        isValidPropertyAccess: [Function: isValidPropertyAccess],
        isValidPropertyAccessForCompletions: [Function: isValidPropertyAccessForCompletions],
        getSignatureFromDeclaration: [Function: getSignatureFromDeclaration],
        isImplementationOfOverload: [Function: isImplementationOfOverload],
        getImmediateAliasedSymbol: [Function: getImmediateAliasedSymbol],
        getAliasedSymbol: [Function: resolveAlias],
        getEmitResolver: [Function: getEmitResolver],
        getExportsOfModule: [Function: getExportsOfModuleAsArray],
        getExportsAndPropertiesOfModule: [Function: getExportsAndPropertiesOfModule],
        forEachExportAndPropertyOfModule: [Function: forEachExportAndPropertyOfModule],
        getSymbolWalker: [Function: getSymbolWalker],
        getAmbientModules: [Function: getAmbientModules],
        getJsxIntrinsicTagNamesAt: [Function: getJsxIntrinsicTagNamesAt],
        isOptionalParameter: [Function: isOptionalParameter],
        tryGetMemberInModuleExports: [Function: tryGetMemberInModuleExports],
        tryGetMemberInModuleExportsAndProperties: [Function: tryGetMemberInModuleExportsAndProperties],
        tryFindAmbientModule: [Function: tryFindAmbientModule],
        tryFindAmbientModuleWithoutAugmentations: [Function: tryFindAmbientModuleWithoutAugmentations],
        getApparentType: [Function: getApparentType],
        getUnionType: [Function: getUnionType],
        isTypeAssignableTo: [Function: isTypeAssignableTo],
        createAnonymousType: [Function: createAnonymousType],
        createSignature: [Function: createSignature],
        createSymbol: [Function: createSymbol],
        createIndexInfo: [Function: createIndexInfo],
        getAnyType: [Function: getAnyType],
        getStringType: [Function: getStringType],
        getNumberType: [Function: getNumberType],
        createPromiseType: [Function: createPromiseType],
        createArrayType: [Function: createArrayType],
        getElementTypeOfArrayType: [Function: getElementTypeOfArrayType],
        getBooleanType: [Function: getBooleanType],
        getFalseType: [Function: getFalseType],
        getTrueType: [Function: getTrueType],
        getVoidType: [Function: getVoidType],
        getUndefinedType: [Function: getUndefinedType],
        getNullType: [Function: getNullType],
        getESSymbolType: [Function: getESSymbolType],
        getNeverType: [Function: getNeverType],
        getOptionalType: [Function: getOptionalType],
        getPromiseType: [Function: getPromiseType],
        getPromiseLikeType: [Function: getPromiseLikeType],
        isSymbolAccessible: [Function: isSymbolAccessible],
        isArrayType: [Function: isArrayType],
        isTupleType: [Function: isTupleType],
        isArrayLikeType: [Function: isArrayLikeType],
        isTypeInvalidDueToUnionDiscriminant: [Function: isTypeInvalidDueToUnionDiscriminant],
        getExactOptionalProperties: [Function: getExactOptionalProperties],
        getAllPossiblePropertiesOfTypes: [Function: getAllPossiblePropertiesOfTypes],
        getSuggestedSymbolForNonexistentProperty: [Function: getSuggestedSymbolForNonexistentProperty],
        getSuggestionForNonexistentProperty: [Function: getSuggestionForNonexistentProperty],
        getSuggestedSymbolForNonexistentJSXAttribute: [Function: getSuggestedSymbolForNonexistentJSXAttribute],
        getSuggestedSymbolForNonexistentSymbol: [Function: getSuggestedSymbolForNonexistentSymbol],
        getSuggestionForNonexistentSymbol: [Function: getSuggestionForNonexistentSymbol],
        getSuggestedSymbolForNonexistentModule: [Function: getSuggestedSymbolForNonexistentModule],
        getSuggestionForNonexistentExport: [Function: getSuggestionForNonexistentExport],
        getSuggestedSymbolForNonexistentClassMember: [Function: getSuggestedSymbolForNonexistentClassMember],
        getBaseConstraintOfType: [Function: getBaseConstraintOfType],
        getDefaultFromTypeParameter: [Function: getDefaultFromTypeParameter],
        resolveName: [Function: resolveName],
        getJsxNamespace: [Function: getJsxNamespace],
        getJsxFragmentFactory: [Function: getJsxFragmentFactory],
        getAccessibleSymbolChain: [Function: getAccessibleSymbolChain],
        getTypePredicateOfSignature: [Function: getTypePredicateOfSignature],
        resolveExternalModuleName: [Function: resolveExternalModuleName],
        resolveExternalModuleSymbol: [Function: resolveExternalModuleSymbol],
        tryGetThisTypeAt: [Function: tryGetThisTypeAt],
        getTypeArgumentConstraint: [Function: getTypeArgumentConstraint],
        getSuggestionDiagnostics: [Function: getSuggestionDiagnostics],
        runWithCancellationToken: [Function: runWithCancellationToken],
        getLocalTypeParametersOfClassOrInterfaceOrTypeAlias: [Function: getLocalTypeParametersOfClassOrInterfaceOrTypeAlias],
        isDeclarationVisible: [Function: isDeclarationVisible],
        isPropertyAccessible: [Function: isPropertyAccessible],
        getTypeOnlyAliasDeclaration: [Function: getTypeOnlyAliasDeclaration],
        getMemberOverrideModifierStatus: [Function: getMemberOverrideModifierStatus]
      },
      flags: 2097152,
      id: 44043,
      objectFlags: 16777216,
      types: [
        <ref *23> TypeObject {
          checker: {
            getNodeCount: [Function: getNodeCount],
            getIdentifierCount: [Function: getIdentifierCount],
            getSymbolCount: [Function: getSymbolCount],
            getTypeCount: [Function: getTypeCount],
            getInstantiationCount: [Function: getInstantiationCount],
            getRelationCacheSizes: [Function: getRelationCacheSizes],
            isUndefinedSymbol: [Function: isUndefinedSymbol],
            isArgumentsSymbol: [Function: isArgumentsSymbol],
            isUnknownSymbol: [Function: isUnknownSymbol],
            getMergedSymbol: [Function: getMergedSymbol],
            getDiagnostics: [Function: getDiagnostics],
            getGlobalDiagnostics: [Function: getGlobalDiagnostics],
            getRecursionIdentity: [Function: getRecursionIdentity],
            getUnmatchedProperties: [Function: getUnmatchedProperties],
            getTypeOfSymbolAtLocation: [Function: getTypeOfSymbolAtLocation],
            getTypeOfSymbol: [Function: getTypeOfSymbol],
            getSymbolsOfParameterPropertyDeclaration: [Function: getSymbolsOfParameterPropertyDeclaration],
            getDeclaredTypeOfSymbol: [Function: getDeclaredTypeOfSymbol],
            getPropertiesOfType: [Function: getPropertiesOfType],
            getPropertyOfType: [Function: getPropertyOfType],
            getPrivateIdentifierPropertyOfType: [Function: getPrivateIdentifierPropertyOfType],
            getTypeOfPropertyOfType: [Function: getTypeOfPropertyOfType],
            getIndexInfoOfType: [Function: getIndexInfoOfType],
            getIndexInfosOfType: [Function: getIndexInfosOfType],
            getSignaturesOfType: [Function: getSignaturesOfType],
            getIndexTypeOfType: [Function: getIndexTypeOfType],
            getIndexType: [Function: getIndexType],
            getBaseTypes: [Function: getBaseTypes],
            getBaseTypeOfLiteralType: [Function: getBaseTypeOfLiteralType],
            getWidenedType: [Function: getWidenedType],
            getTypeFromTypeNode: [Function: getTypeFromTypeNode],
            getParameterType: [Function: getTypeAtPosition],
            getParameterIdentifierNameAtPosition: [Function: getParameterIdentifierNameAtPosition],
            getPromisedTypeOfPromise: [Function: getPromisedTypeOfPromise],
            getAwaitedType: [Function: getAwaitedType],
            getReturnTypeOfSignature: [Function: getReturnTypeOfSignature],
            isNullableType: [Function: isNullableType],
            getNullableType: [Function: getNullableType],
            getNonNullableType: [Function: getNonNullableType],
            getNonOptionalType: [Function: removeOptionalTypeMarker],
            getTypeArguments: [Function: getTypeArguments],
            typeToTypeNode: [Function: typeToTypeNode],
            indexInfoToIndexSignatureDeclaration: [Function: indexInfoToIndexSignatureDeclaration],
            signatureToSignatureDeclaration: [Function: signatureToSignatureDeclaration],
            symbolToEntityName: [Function: symbolToEntityName],
            symbolToExpression: [Function: symbolToExpression],
            symbolToTypeParameterDeclarations: [Function: symbolToTypeParameterDeclarations],
            symbolToParameterDeclaration: [Function: symbolToParameterDeclaration],
            typeParameterToDeclaration: [Function: typeParameterToDeclaration],
            getSymbolsInScope: [Function: getSymbolsInScope],
            getSymbolAtLocation: [Function: getSymbolAtLocation],
            getIndexInfosAtLocation: [Function: getIndexInfosAtLocation],
            getShorthandAssignmentValueSymbol: [Function: getShorthandAssignmentValueSymbol],
            getExportSpecifierLocalTargetSymbol: [Function: getExportSpecifierLocalTargetSymbol],
            getExportSymbolOfSymbol: [Function: getExportSymbolOfSymbol],
            getTypeAtLocation: [Function: getTypeAtLocation],
            getTypeOfAssignmentPattern: [Function: getTypeOfAssignmentPattern],
            getPropertySymbolOfDestructuringAssignment: [Function: getPropertySymbolOfDestructuringAssignment],
            signatureToString: [Function: signatureToString],
            typeToString: [Function: typeToString],
            symbolToString: [Function: symbolToString],
            typePredicateToString: [Function: typePredicateToString],
            writeSignature: [Function: writeSignature],
            writeType: [Function: writeType],
            writeSymbol: [Function: writeSymbol],
            writeTypePredicate: [Function: writeTypePredicate],
            getAugmentedPropertiesOfType: [Function: getAugmentedPropertiesOfType],
            getRootSymbols: [Function: getRootSymbols],
            getSymbolOfExpando: [Function: getSymbolOfExpando],
            getContextualType: [Function: getContextualType],
            getContextualTypeForObjectLiteralElement: [Function: getContextualTypeForObjectLiteralElement],
            getContextualTypeForArgumentAtIndex: [Function: getContextualTypeForArgumentAtIndex],
            getContextualTypeForJsxAttribute: [Function: getContextualTypeForJsxAttribute],
            isContextSensitive: [Function: isContextSensitive],
            getTypeOfPropertyOfContextualType: [Function: getTypeOfPropertyOfContextualType],
            getFullyQualifiedName: [Function: getFullyQualifiedName],
            getResolvedSignature: [Function: getResolvedSignature],
            getResolvedSignatureForStringLiteralCompletions: [Function: getResolvedSignatureForStringLiteralCompletions],
            getResolvedSignatureForSignatureHelp: [Function: getResolvedSignatureForSignatureHelp],
            getExpandedParameters: [Function: getExpandedParameters],
            hasEffectiveRestParameter: [Function: hasEffectiveRestParameter],
            containsArgumentsReference: [Function: containsArgumentsReference],
            getConstantValue: [Function: getConstantValue],
            isValidPropertyAccess: [Function: isValidPropertyAccess],
            isValidPropertyAccessForCompletions: [Function: isValidPropertyAccessForCompletions],
            getSignatureFromDeclaration: [Function: getSignatureFromDeclaration],
            isImplementationOfOverload: [Function: isImplementationOfOverload],
            getImmediateAliasedSymbol: [Function: getImmediateAliasedSymbol],
            getAliasedSymbol: [Function: resolveAlias],
            getEmitResolver: [Function: getEmitResolver],
            getExportsOfModule: [Function: getExportsOfModuleAsArray],
            getExportsAndPropertiesOfModule: [Function: getExportsAndPropertiesOfModule],
            forEachExportAndPropertyOfModule: [Function: forEachExportAndPropertyOfModule],
            getSymbolWalker: [Function: getSymbolWalker],
            getAmbientModules: [Function: getAmbientModules],
            getJsxIntrinsicTagNamesAt: [Function: getJsxIntrinsicTagNamesAt],
            isOptionalParameter: [Function: isOptionalParameter],
            tryGetMemberInModuleExports: [Function: tryGetMemberInModuleExports],
            tryGetMemberInModuleExportsAndProperties: [Function: tryGetMemberInModuleExportsAndProperties],
            tryFindAmbientModule: [Function: tryFindAmbientModule],
            tryFindAmbientModuleWithoutAugmentations: [Function: tryFindAmbientModuleWithoutAugmentations],
            getApparentType: [Function: getApparentType],
            getUnionType: [Function: getUnionType],
            isTypeAssignableTo: [Function: isTypeAssignableTo],
            createAnonymousType: [Function: createAnonymousType],
            createSignature: [Function: createSignature],
            createSymbol: [Function: createSymbol],
            createIndexInfo: [Function: createIndexInfo],
            getAnyType: [Function: getAnyType],
            getStringType: [Function: getStringType],
            getNumberType: [Function: getNumberType],
            createPromiseType: [Function: createPromiseType],
            createArrayType: [Function: createArrayType],
            getElementTypeOfArrayType: [Function: getElementTypeOfArrayType],
            getBooleanType: [Function: getBooleanType],
            getFalseType: [Function: getFalseType],
            getTrueType: [Function: getTrueType],
            getVoidType: [Function: getVoidType],
            getUndefinedType: [Function: getUndefinedType],
            getNullType: [Function: getNullType],
            getESSymbolType: [Function: getESSymbolType],
            getNeverType: [Function: getNeverType],
            getOptionalType: [Function: getOptionalType],
            getPromiseType: [Function: getPromiseType],
            getPromiseLikeType: [Function: getPromiseLikeType],
            isSymbolAccessible: [Function: isSymbolAccessible],
            isArrayType: [Function: isArrayType],
            isTupleType: [Function: isTupleType],
            isArrayLikeType: [Function: isArrayLikeType],
            isTypeInvalidDueToUnionDiscriminant: [Function: isTypeInvalidDueToUnionDiscriminant],
            getExactOptionalProperties: [Function: getExactOptionalProperties],
            getAllPossiblePropertiesOfTypes: [Function: getAllPossiblePropertiesOfTypes],
            getSuggestedSymbolForNonexistentProperty: [Function: getSuggestedSymbolForNonexistentProperty],
            getSuggestionForNonexistentProperty: [Function: getSuggestionForNonexistentProperty],
            getSuggestedSymbolForNonexistentJSXAttribute: [Function: getSuggestedSymbolForNonexistentJSXAttribute],
            getSuggestedSymbolForNonexistentSymbol: [Function: getSuggestedSymbolForNonexistentSymbol],
            getSuggestionForNonexistentSymbol: [Function: getSuggestionForNonexistentSymbol],
            getSuggestedSymbolForNonexistentModule: [Function: getSuggestedSymbolForNonexistentModule],
            getSuggestionForNonexistentExport: [Function: getSuggestionForNonexistentExport],
            getSuggestedSymbolForNonexistentClassMember: [Function: getSuggestedSymbolForNonexistentClassMember],
            getBaseConstraintOfType: [Function: getBaseConstraintOfType],
            getDefaultFromTypeParameter: [Function: getDefaultFromTypeParameter],
            resolveName: [Function: resolveName],
            getJsxNamespace: [Function: getJsxNamespace],
            getJsxFragmentFactory: [Function: getJsxFragmentFactory],
            getAccessibleSymbolChain: [Function: getAccessibleSymbolChain],
            getTypePredicateOfSignature: [Function: getTypePredicateOfSignature],
            resolveExternalModuleName: [Function: resolveExternalModuleName],
            resolveExternalModuleSymbol: [Function: resolveExternalModuleSymbol],
            tryGetThisTypeAt: [Function: tryGetThisTypeAt],
            getTypeArgumentConstraint: [Function: getTypeArgumentConstraint],
            getSuggestionDiagnostics: [Function: getSuggestionDiagnostics],
            runWithCancellationToken: [Function: runWithCancellationToken],
            getLocalTypeParametersOfClassOrInterfaceOrTypeAlias: [Function: getLocalTypeParametersOfClassOrInterfaceOrTypeAlias],
            isDeclarationVisible: [Function: isDeclarationVisible],
            isPropertyAccessible: [Function: isPropertyAccessible],
            getTypeOnlyAliasDeclaration: [Function: getTypeOnlyAliasDeclaration],
            getMemberOverrideModifierStatus: [Function: getMemberOverrideModifierStatus]
          },
          flags: 524288,
          id: 44036,
          objectFlags: 1572960,
          symbol: SymbolObject {
            flags: 2048,
            escapedName: '__type',
            declarations: [Array],
            members: Map(0) {}
          },
          members: Map(0) {},
          properties: [],
          callSignatures: [],
          constructSignatures: [],
          indexInfos: [],
          declaration: NodeObject {
            pos: 73668,
            end: 73702,
            flags: 16777216,
            modifierFlagsCache: 0,
            transformFlags: 1,
            parent: [NodeObject],
            kind: 195,
            readonlyToken: undefined,
            typeParameter: [NodeObject],
            nameType: undefined,
            questionToken: [TokenObject],
            type: [NodeObject],
            members: [Array],
            symbol: [SymbolObject],
            locals: [Map],
            nextContainer: [NodeObject],
            id: 1629
          },
          typeParameter: TypeObject {
            checker: [Object],
            flags: 262144,
            id: 44037,
            symbol: [SymbolObject],
            target: [TypeObject],
            mapper: [Object],
            constraint: [TypeObject],
            immediateBaseConstraint: [TypeObject],
            resolvedBaseConstraint: [TypeObject]
          },
          target: TypeObject {
            checker: [Object],
            flags: 524288,
            id: 828,
            objectFlags: 1572896,
            symbol: [SymbolObject],
            members: undefined,
            properties: undefined,
            callSignatures: undefined,
            constructSignatures: undefined,
            indexInfos: undefined,
            declaration: [NodeObject],
            aliasSymbol: [SymbolObject],
            aliasTypeArguments: [Array],
            typeParameter: [TypeObject],
            constraintType: [TypeObject],
            instantiations: [Map],
            templateType: [TypeObject]
          },
          mapper: { kind: 4, mapper1: [Object], mapper2: [Object] },
          aliasSymbol: SymbolObject {
            flags: 524288,
            escapedName: 'Required',
            declarations: [Array],
            parent: undefined,
            id: 23760
          },
          aliasTypeArguments: [ [TypeObject] ],
          immediateBaseConstraint: [Circular *23],
          constraintType: <ref *6> TypeObject {
            checker: [Object],
            flags: 4194304,
            id: 12487,
            type: [TypeObject],
            stringsOnly: false,
            immediateBaseConstraint: [TypeObject],
            restrictiveInstantiation: [TypeObject]
          },
          resolvedApparentType: [Circular *23],
          modifiersType: <ref *24> TypeObject {
            checker: [Object],
            flags: 524288,
            id: 44034,
            objectFlags: 1572960,
            symbol: [SymbolObject],
            members: Map(0) {},
            properties: [],
            callSignatures: [],
            constructSignatures: [],
            indexInfos: [],
            declaration: [NodeObject],
            typeParameter: [TypeObject],
            target: [TypeObject],
            mapper: [Object],
            aliasSymbol: [SymbolObject],
            aliasTypeArguments: [Array],
            constraintType: [TypeObject],
            resolvedApparentType: [Circular *24],
            modifiersType: [TypeObject]
          }
        },
        <ref *25> TypeObject {
          checker: {
            getNodeCount: [Function: getNodeCount],
            getIdentifierCount: [Function: getIdentifierCount],
            getSymbolCount: [Function: getSymbolCount],
            getTypeCount: [Function: getTypeCount],
            getInstantiationCount: [Function: getInstantiationCount],
            getRelationCacheSizes: [Function: getRelationCacheSizes],
            isUndefinedSymbol: [Function: isUndefinedSymbol],
            isArgumentsSymbol: [Function: isArgumentsSymbol],
            isUnknownSymbol: [Function: isUnknownSymbol],
            getMergedSymbol: [Function: getMergedSymbol],
            getDiagnostics: [Function: getDiagnostics],
            getGlobalDiagnostics: [Function: getGlobalDiagnostics],
            getRecursionIdentity: [Function: getRecursionIdentity],
            getUnmatchedProperties: [Function: getUnmatchedProperties],
            getTypeOfSymbolAtLocation: [Function: getTypeOfSymbolAtLocation],
            getTypeOfSymbol: [Function: getTypeOfSymbol],
            getSymbolsOfParameterPropertyDeclaration: [Function: getSymbolsOfParameterPropertyDeclaration],
            getDeclaredTypeOfSymbol: [Function: getDeclaredTypeOfSymbol],
            getPropertiesOfType: [Function: getPropertiesOfType],
            getPropertyOfType: [Function: getPropertyOfType],
            getPrivateIdentifierPropertyOfType: [Function: getPrivateIdentifierPropertyOfType],
            getTypeOfPropertyOfType: [Function: getTypeOfPropertyOfType],
            getIndexInfoOfType: [Function: getIndexInfoOfType],
            getIndexInfosOfType: [Function: getIndexInfosOfType],
            getSignaturesOfType: [Function: getSignaturesOfType],
            getIndexTypeOfType: [Function: getIndexTypeOfType],
            getIndexType: [Function: getIndexType],
            getBaseTypes: [Function: getBaseTypes],
            getBaseTypeOfLiteralType: [Function: getBaseTypeOfLiteralType],
            getWidenedType: [Function: getWidenedType],
            getTypeFromTypeNode: [Function: getTypeFromTypeNode],
            getParameterType: [Function: getTypeAtPosition],
            getParameterIdentifierNameAtPosition: [Function: getParameterIdentifierNameAtPosition],
            getPromisedTypeOfPromise: [Function: getPromisedTypeOfPromise],
            getAwaitedType: [Function: getAwaitedType],
            getReturnTypeOfSignature: [Function: getReturnTypeOfSignature],
            isNullableType: [Function: isNullableType],
            getNullableType: [Function: getNullableType],
            getNonNullableType: [Function: getNonNullableType],
            getNonOptionalType: [Function: removeOptionalTypeMarker],
            getTypeArguments: [Function: getTypeArguments],
            typeToTypeNode: [Function: typeToTypeNode],
            indexInfoToIndexSignatureDeclaration: [Function: indexInfoToIndexSignatureDeclaration],
            signatureToSignatureDeclaration: [Function: signatureToSignatureDeclaration],
            symbolToEntityName: [Function: symbolToEntityName],
            symbolToExpression: [Function: symbolToExpression],
            symbolToTypeParameterDeclarations: [Function: symbolToTypeParameterDeclarations],
            symbolToParameterDeclaration: [Function: symbolToParameterDeclaration],
            typeParameterToDeclaration: [Function: typeParameterToDeclaration],
            getSymbolsInScope: [Function: getSymbolsInScope],
            getSymbolAtLocation: [Function: getSymbolAtLocation],
            getIndexInfosAtLocation: [Function: getIndexInfosAtLocation],
            getShorthandAssignmentValueSymbol: [Function: getShorthandAssignmentValueSymbol],
            getExportSpecifierLocalTargetSymbol: [Function: getExportSpecifierLocalTargetSymbol],
            getExportSymbolOfSymbol: [Function: getExportSymbolOfSymbol],
            getTypeAtLocation: [Function: getTypeAtLocation],
            getTypeOfAssignmentPattern: [Function: getTypeOfAssignmentPattern],
            getPropertySymbolOfDestructuringAssignment: [Function: getPropertySymbolOfDestructuringAssignment],
            signatureToString: [Function: signatureToString],
            typeToString: [Function: typeToString],
            symbolToString: [Function: symbolToString],
            typePredicateToString: [Function: typePredicateToString],
            writeSignature: [Function: writeSignature],
            writeType: [Function: writeType],
            writeSymbol: [Function: writeSymbol],
            writeTypePredicate: [Function: writeTypePredicate],
            getAugmentedPropertiesOfType: [Function: getAugmentedPropertiesOfType],
            getRootSymbols: [Function: getRootSymbols],
            getSymbolOfExpando: [Function: getSymbolOfExpando],
            getContextualType: [Function: getContextualType],
            getContextualTypeForObjectLiteralElement: [Function: getContextualTypeForObjectLiteralElement],
            getContextualTypeForArgumentAtIndex: [Function: getContextualTypeForArgumentAtIndex],
            getContextualTypeForJsxAttribute: [Function: getContextualTypeForJsxAttribute],
            isContextSensitive: [Function: isContextSensitive],
            getTypeOfPropertyOfContextualType: [Function: getTypeOfPropertyOfContextualType],
            getFullyQualifiedName: [Function: getFullyQualifiedName],
            getResolvedSignature: [Function: getResolvedSignature],
            getResolvedSignatureForStringLiteralCompletions: [Function: getResolvedSignatureForStringLiteralCompletions],
            getResolvedSignatureForSignatureHelp: [Function: getResolvedSignatureForSignatureHelp],
            getExpandedParameters: [Function: getExpandedParameters],
            hasEffectiveRestParameter: [Function: hasEffectiveRestParameter],
            containsArgumentsReference: [Function: containsArgumentsReference],
            getConstantValue: [Function: getConstantValue],
            isValidPropertyAccess: [Function: isValidPropertyAccess],
            isValidPropertyAccessForCompletions: [Function: isValidPropertyAccessForCompletions],
            getSignatureFromDeclaration: [Function: getSignatureFromDeclaration],
            isImplementationOfOverload: [Function: isImplementationOfOverload],
            getImmediateAliasedSymbol: [Function: getImmediateAliasedSymbol],
            getAliasedSymbol: [Function: resolveAlias],
            getEmitResolver: [Function: getEmitResolver],
            getExportsOfModule: [Function: getExportsOfModuleAsArray],
            getExportsAndPropertiesOfModule: [Function: getExportsAndPropertiesOfModule],
            forEachExportAndPropertyOfModule: [Function: forEachExportAndPropertyOfModule],
            getSymbolWalker: [Function: getSymbolWalker],
            getAmbientModules: [Function: getAmbientModules],
            getJsxIntrinsicTagNamesAt: [Function: getJsxIntrinsicTagNamesAt],
            isOptionalParameter: [Function: isOptionalParameter],
            tryGetMemberInModuleExports: [Function: tryGetMemberInModuleExports],
            tryGetMemberInModuleExportsAndProperties: [Function: tryGetMemberInModuleExportsAndProperties],
            tryFindAmbientModule: [Function: tryFindAmbientModule],
            tryFindAmbientModuleWithoutAugmentations: [Function: tryFindAmbientModuleWithoutAugmentations],
            getApparentType: [Function: getApparentType],
            getUnionType: [Function: getUnionType],
            isTypeAssignableTo: [Function: isTypeAssignableTo],
            createAnonymousType: [Function: createAnonymousType],
            createSignature: [Function: createSignature],
            createSymbol: [Function: createSymbol],
            createIndexInfo: [Function: createIndexInfo],
            getAnyType: [Function: getAnyType],
            getStringType: [Function: getStringType],
            getNumberType: [Function: getNumberType],
            createPromiseType: [Function: createPromiseType],
            createArrayType: [Function: createArrayType],
            getElementTypeOfArrayType: [Function: getElementTypeOfArrayType],
            getBooleanType: [Function: getBooleanType],
            getFalseType: [Function: getFalseType],
            getTrueType: [Function: getTrueType],
            getVoidType: [Function: getVoidType],
            getUndefinedType: [Function: getUndefinedType],
            getNullType: [Function: getNullType],
            getESSymbolType: [Function: getESSymbolType],
            getNeverType: [Function: getNeverType],
            getOptionalType: [Function: getOptionalType],
            getPromiseType: [Function: getPromiseType],
            getPromiseLikeType: [Function: getPromiseLikeType],
            isSymbolAccessible: [Function: isSymbolAccessible],
            isArrayType: [Function: isArrayType],
            isTupleType: [Function: isTupleType],
            isArrayLikeType: [Function: isArrayLikeType],
            isTypeInvalidDueToUnionDiscriminant: [Function: isTypeInvalidDueToUnionDiscriminant],
            getExactOptionalProperties: [Function: getExactOptionalProperties],
            getAllPossiblePropertiesOfTypes: [Function: getAllPossiblePropertiesOfTypes],
            getSuggestedSymbolForNonexistentProperty: [Function: getSuggestedSymbolForNonexistentProperty],
            getSuggestionForNonexistentProperty: [Function: getSuggestionForNonexistentProperty],
            getSuggestedSymbolForNonexistentJSXAttribute: [Function: getSuggestedSymbolForNonexistentJSXAttribute],
            getSuggestedSymbolForNonexistentSymbol: [Function: getSuggestedSymbolForNonexistentSymbol],
            getSuggestionForNonexistentSymbol: [Function: getSuggestionForNonexistentSymbol],
            getSuggestedSymbolForNonexistentModule: [Function: getSuggestedSymbolForNonexistentModule],
            getSuggestionForNonexistentExport: [Function: getSuggestionForNonexistentExport],
            getSuggestedSymbolForNonexistentClassMember: [Function: getSuggestedSymbolForNonexistentClassMember],
            getBaseConstraintOfType: [Function: getBaseConstraintOfType],
            getDefaultFromTypeParameter: [Function: getDefaultFromTypeParameter],
            resolveName: [Function: resolveName],
            getJsxNamespace: [Function: getJsxNamespace],
            getJsxFragmentFactory: [Function: getJsxFragmentFactory],
            getAccessibleSymbolChain: [Function: getAccessibleSymbolChain],
            getTypePredicateOfSignature: [Function: getTypePredicateOfSignature],
            resolveExternalModuleName: [Function: resolveExternalModuleName],
            resolveExternalModuleSymbol: [Function: resolveExternalModuleSymbol],
            tryGetThisTypeAt: [Function: tryGetThisTypeAt],
            getTypeArgumentConstraint: [Function: getTypeArgumentConstraint],
            getSuggestionDiagnostics: [Function: getSuggestionDiagnostics],
            runWithCancellationToken: [Function: runWithCancellationToken],
            getLocalTypeParametersOfClassOrInterfaceOrTypeAlias: [Function: getLocalTypeParametersOfClassOrInterfaceOrTypeAlias],
            isDeclarationVisible: [Function: isDeclarationVisible],
            isPropertyAccessible: [Function: isPropertyAccessible],
            getTypeOnlyAliasDeclaration: [Function: getTypeOnlyAliasDeclaration],
            getMemberOverrideModifierStatus: [Function: getMemberOverrideModifierStatus]
          },
          flags: 524288,
          id: 44041,
          objectFlags: 1572960,
          symbol: SymbolObject {
            flags: 2048,
            escapedName: '__type',
            declarations: [Array],
            members: Map(0) {}
          },
          members: Map(0) {},
          properties: [],
          callSignatures: [],
          constructSignatures: [],
          indexInfos: [],
          declaration: NodeObject {
            pos: 73564,
            end: 73597,
            flags: 16777216,
            modifierFlagsCache: 0,
            transformFlags: 1,
            parent: [NodeObject],
            kind: 195,
            readonlyToken: undefined,
            typeParameter: [NodeObject],
            nameType: undefined,
            questionToken: [TokenObject],
            type: [NodeObject],
            members: [Array],
            symbol: [SymbolObject],
            locals: [Map],
            nextContainer: [NodeObject],
            id: 1623
          },
          typeParameter: TypeObject {
            checker: [Object],
            flags: 262144,
            id: 44042,
            symbol: [SymbolObject],
            target: [TypeObject],
            mapper: [Object],
            constraint: [TypeObject],
            immediateBaseConstraint: [TypeObject],
            resolvedBaseConstraint: [TypeObject]
          },
          target: TypeObject {
            checker: [Object],
            flags: 524288,
            id: 823,
            objectFlags: 1572896,
            symbol: [SymbolObject],
            members: undefined,
            properties: undefined,
            callSignatures: undefined,
            constructSignatures: undefined,
            indexInfos: undefined,
            declaration: [NodeObject],
            aliasSymbol: [SymbolObject],
            aliasTypeArguments: [Array],
            typeParameter: [TypeObject],
            constraintType: [TypeObject],
            instantiations: [Map],
            templateType: [TypeObject]
          },
          mapper: { kind: 4, mapper1: [Object], mapper2: [Object] },
          aliasSymbol: SymbolObject {
            flags: 524288,
            escapedName: 'Partial',
            declarations: [Array],
            parent: undefined,
            id: 23761
          },
          aliasTypeArguments: [ [TypeObject] ],
          immediateBaseConstraint: [Circular *25],
          constraintType: TypeObject {
            checker: [Object],
            flags: 16777216,
            id: 44038,
            root: [Object],
            checkType: [TypeObject],
            extendsType: [TypeObject],
            mapper: [Object],
            combinedMapper: undefined,
            aliasSymbol: [SymbolObject],
            aliasTypeArguments: [Array],
            resolvedTrueType: [TypeObject],
            resolvedFalseType: [TypeObject],
            immediateBaseConstraint: [TypeObject]
          },
          resolvedApparentType: [Circular *25],
          modifiersType: <ref *26> TypeObject {
            checker: [Object],
            flags: 524288,
            id: 44039,
            objectFlags: 1572960,
            symbol: [SymbolObject],
            members: Map(0) {},
            properties: [],
            callSignatures: [],
            constructSignatures: [],
            indexInfos: [],
            declaration: [NodeObject],
            typeParameter: [TypeObject],
            target: [TypeObject],
            mapper: [Object],
            aliasSymbol: [SymbolObject],
            aliasTypeArguments: [Array],
            constraintType: [TypeObject],
            resolvedApparentType: [Circular *26],
            modifiersType: [TypeObject]
          }
        }
      ],
      aliasSymbol: undefined,
      aliasTypeArguments: undefined,
      resolvedApparentType: [Circular *27],
      resolvedProperties: [],
      members: Map(0) {},
      properties: [],
      callSignatures: [],
      constructSignatures: [],
      indexInfos: []
    }
  }
}
domoritz commented 2 years ago

Thanks for the report. Can you provide a minimal reproducible example that demonstrates the issue?

Also, have you tried ts json schema generator?

netanel-mce commented 1 year ago

I have a same issue,

Minimal reproducible example:

I tried generate Schema for "Main" type

type Util = {
    a: {
        b: string;
    };
};

export type Main = {
    [Key in keyof Util]: {
        [key: string]: Util[Key];
    };
};

Versions:

typescript-json-schema : 0.55.0 typescript: ~4.9.3 node: 18.12.1

@domoritz @YousefED