diff --git a/src/services/codefixes/convertToMappedObjectType.ts b/src/services/codefixes/convertToMappedObjectType.ts index 340fcf2257ce0..7f9f6af4e80fa 100644 --- a/src/services/codefixes/convertToMappedObjectType.ts +++ b/src/services/codefixes/convertToMappedObjectType.ts @@ -25,9 +25,12 @@ namespace ts.codefix { interface Info { readonly indexSignature: IndexSignatureDeclaration; readonly container: FixableDeclaration; } function getInfo(sourceFile: SourceFile, pos: number): Info | undefined { const token = getTokenAtPosition(sourceFile, pos); - const indexSignature = cast(token.parent.parent, isIndexSignatureDeclaration); - if (isClassDeclaration(indexSignature.parent)) return undefined; - const container = isInterfaceDeclaration(indexSignature.parent) ? indexSignature.parent : cast(indexSignature.parent.parent, isTypeAliasDeclaration); + const indexSignature = tryCast(token.parent.parent, isIndexSignatureDeclaration); + if (!indexSignature) return undefined; + + const container = isInterfaceDeclaration(indexSignature.parent) ? indexSignature.parent : tryCast(indexSignature.parent.parent, isTypeAliasDeclaration); + if (!container) return undefined; + return { indexSignature, container }; } diff --git a/tests/cases/fourslash/codeFixConvertToMappedObjectType13.ts b/tests/cases/fourslash/codeFixConvertToMappedObjectType13.ts new file mode 100644 index 0000000000000..c5655f99f58f0 --- /dev/null +++ b/tests/cases/fourslash/codeFixConvertToMappedObjectType13.ts @@ -0,0 +1,7 @@ +/// + +////let x: { +//// [p: ""]: string; +////} + +verify.not.codeFixAvailable("fixConvertToMappedObjectType");