{"record":{"id":"aa818104e53fa393","repo":"deepseek-ai/deepseek-harness","slug":"mapped-type-parameter-node-parameter-name-has-n","errorCode":null,"errorMessage":"mapped type parameter ${node.parameter.name} has no constraint","messagePattern":"mapped type parameter (.+?) has no constraint","errorType":"exception","errorClass":"TypeGraphRenderError","httpStatus":null,"severity":"error","filePath":"packages/typert/generator/src/renderer.ts","lineNumber":133,"sourceCode":"          }\n          return `${element.rest ? '...' : ''}${type}${element.optional ? '?' : ''}`\n        })\n        return `[${elements.join(', ')}]`\n      }\n      case 'object': return this.renderObject(node.members, references)\n      case 'function': return `${this.renderSignatureHead(node.signature, references)} => ${this.renderType(node.signature.returns, references)}`\n      case 'constructor': return `${node.abstract ? 'abstract ' : ''}new ${this.renderSignatureHead(node.signature, references)} => ${this.renderType(node.signature.returns, references)}`\n      case 'indexed-access': return `${this.renderType(node.object, references)}[${this.renderType(node.index, references)}]`\n      case 'operator': return `${node.operator} ${this.renderType(node.type, references)}`\n      case 'conditional': {\n        return `${this.renderType(node.check, references)} extends ${this.renderType(node.extends, references)} ? ${this.renderType(node.whenTrue, references)} : ${this.renderType(node.whenFalse, references)}`\n      }\n      case 'infer': return `infer ${this.renderTypeParameter(node.parameter, false, references)}`\n      case 'mapped': {\n        const readonly = node.readonly === 'preserve' ? '' : node.readonly === 'remove' ? '-readonly ' : 'readonly '\n        const optional = node.optional === 'preserve' ? '' : node.optional === 'remove' ? '-?' : '?'\n        if (node.parameter.constraint === undefined) {\n          throw new TypeGraphRenderError(`mapped type parameter ${node.parameter.name} has no constraint`)\n        }\n        const parameter = `${node.parameter.name} in ${this.renderType(node.parameter.constraint, references)}`\n        const nameType = node.nameType === undefined ? '' : ` as ${this.renderType(node.nameType, references)}`\n        const value = node.value === undefined ? 'unknown' : this.renderType(node.value, references)\n        return `{ ${readonly}[${parameter}${nameType}]${optional}: ${value} }`\n      }\n      case 'template-literal': {\n        const spans = node.spans.map(span => `\\${${this.renderType(span.type, references)}}${escapeTemplate(span.text)}`).join('')\n        return `\\`${escapeTemplate(node.head)}${spans}\\``\n      }\n      case 'type-query': {\n        const argumentsText = node.arguments.length === 0\n          ? ''\n          : `<${node.arguments.map(argument => this.renderType(argument, references)).join(', ')}>`\n        return `typeof ${node.expression}${argumentsText}`\n      }\n      case 'import-type': {\n        const attributes = node.attributes === undefined ? '' : `, ${node.attributes}`","sourceCodeStart":115,"sourceCodeEnd":151,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/typert/generator/src/renderer.ts#L115-L151","documentation":"Error \"mapped type parameter ${node.parameter.name} has no constraint\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/typert/generator/src/renderer.ts:133 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add a constraint to the mapped type parameter, or handle unconstrained parameters in the renderer input."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}