diff --git a/src/transformers/RootTransformer.ts b/src/transformers/RootTransformer.ts index 531350d8..7185947c 100644 --- a/src/transformers/RootTransformer.ts +++ b/src/transformers/RootTransformer.ts @@ -286,9 +286,11 @@ export default class RootTransformer { fieldIndex++; } else if ( rangeToRemoveIndex < rangesToRemove.length && - this.tokens.currentIndex() === rangesToRemove[rangeToRemoveIndex].start + this.tokens.currentIndex() >= rangesToRemove[rangeToRemoveIndex].start ) { - this.tokens.removeInitialToken(); + if (this.tokens.currentIndex() < rangesToRemove[rangeToRemoveIndex].end) { + this.tokens.removeInitialToken(); + } while (this.tokens.currentIndex() < rangesToRemove[rangeToRemoveIndex].end) { this.tokens.removeToken(); } diff --git a/test/typescript-test.ts b/test/typescript-test.ts index 3288f636..62cacd19 100644 --- a/test/typescript-test.ts +++ b/test/typescript-test.ts @@ -2406,4 +2406,23 @@ describe("typescript transform", () => { `, ); }); + + it("correctly handles field declarations after function overloads", () => { + assertTypeScriptResult( + ` + class Class { + method(a: number); + method(a: unknown) {} + declare field: number; + } + `, + `"use strict"; + class Class { + + method(a) {} + + } + `, + ); + }); });