microsoft / microsoft/TypeScript
[TypeScript] Rename Symbol doesn't work as expected with Declaration Merging
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
Type: Bug
Does this issue occur when all extensions are disabled?: Yes
When renaming symbols in TypeScript, the feature doesn't take into account declaration merging. As a result, renaming symbols breaks references. Renaming the subsequent symbols to match does not fix the references. Whether the imports are explicit or default seems to have no effect.
Steps to Reproduce:
- Create a class and a namespace with the same name, export them
- Import the merged symbol in another file, use references to both the class and namespace
- Attempt to rename the original class & namespace without breaking the references
// file: MyWonderfulClass.class.ts
export class MyWonderfulClass {
// Absolutely wonderful things
}
export namespace MyWonderfulClass {
export interface MyWonderfulClassType {}
}
export default MyWonderfulClass;
// file: script.ts
import MyWonderfulClass from "./MyWonderfulClass.class";
const inst = new MyWonderfulClass();
const obj: MyWonderfulClass.MyWonderfulClassType = {};
VS Code version: Code 1.102.0 (cb0c47c0cfaad0757385834bd89d410c78a856c0, 2025-07-09T22:10:34.600Z)
OS version: Windows_NT x64 10.0.26100
Modes:
Remote OS version: Linux x64 6.6.87.2-microsoft-standard-WSL2
System Info
| Item | Value |
|---|---|
| CPUs | 13th Gen Intel(R) Core(TM) i9-13900K (32 x 2995) |
| GPU Status | 2d_canvas: enabled canvas_oop_rasterization: enabled_on direct_rendering_display_compositor: disabled_off_ok gpu_compositing: enabled multiple_raster_threads: enabled_on opengl: enabled_on rasterization: enabled raw_draw: disabled_off_ok skia_graphite: disabled_off video_decode: enabled video_encode: enabled vulkan: disabled_off webgl: enabled webgl2: enabled webgpu: enabled webnn: disabled_off |
| Load (avg) | undefined |
| Memory (System) | 63.72GB (42.33GB free) |
| Process Argv | --crash-reporter-id cbb68604-7b21-4289-9c14-7e1fc2a74fab |
| Screen Reader | no |
| VM | 0% |
| Item | Value |
|---|---|
| Remote | WSL: Ubuntu |
| OS | Linux x64 6.6.87.2-microsoft-standard-WSL2 |
| CPUs | 13th Gen Intel(R) Core(TM) i9-13900K (32 x 0) |
| Memory (System) | 31.20GB (29.24GB free) |
| VM | 0% |
Extensions (35)
| Extension | Author (truncated) | Version |
|---|---|---|
| vscode-tailwindcss | bra | 0.14.25 |
| vscode-modelines | chr | 2.0.6 |
| vscode-css-modules | cli | 0.5.4 |
| vscode-eslint | dba | 3.0.10 |
| es7-react-js-snippets | dsz | 4.4.3 |
| gitlens | eam | 17.3.0 |
| vscode-html-css | ecm | 2.0.13 |
| vscode-great-icons | emm | 2.1.119 |
| php-intellisense | fel | 2.3.14 |
| vscode-firefox-debug | fir | 2.15.0 |
| auto-rename-tag | for | 0.1.10 |
| vscode-github-actions | git | 0.27.2 |
| go | gol | 0.48.0 |
| todo-tree | Gru | 0.0.226 |
| beautify | Hoo | 1.5.0 |
| rest-client | hum | 0.25.1 |
| git-graph | mhu | 1.30.0 |
| vscode-containers | ms- | 2.0.3 |
| vscode-docker | ms- | 2.0.0 |
| vscode-edge-devtools | ms- | 2.1.9 |
| remote-containers | ms- | 0.422.0 |
| remote-ssh | ms- | 0.120.0 |
| remote-ssh-edit | ms- | 0.87.0 |
| remote-wsl | ms- | 0.99.0 |
| vscode-remote-extensionpack | ms- | 0.26.0 |
| cpptools | ms- | 1.26.3 |
| powershell | ms- | 2025.2.0 |
| remote-explorer | ms- | 0.5.0 |
| remote-server | ms- | 1.5.2 |
| prisma | Pri | 6.11.1 |
| perl | ric | 2.6.2 |
| vscode-icons | vsc | 12.13.0 |
| vscode-nginx | wil | 0.7.2 |
| php-pack | xde | 1.0.3 |
| html-css-class-completion | Zig | 1.20.0 |
A/B Experiments
vsliv368:30146709
vspor879:30202332
vspor708:30202333
vspor363:30204092
vscod805:30301674
binariesv615:30325510
vsaa593cf:30376535
py29gd2263:31024239
vscaat:30438848
c4g48928:30535728
azure-dev_surveyone:30548225
vscrp:30673768
962ge761:30959799
pythongtdpath:30769146
welcomedialog:30910333
pythonnoceb:30805159
asynctok:30898717
pythonmypyd1:30879173
h48ei257:31000450
pythontbext0:30879054
accentitlementsc:30995553
dsvsc016:30899300
dsvsc017:30899301
dsvsc018:30899302
cppperfnew:31000557
dsvsc020:30976470
pythonait:31006305
dsvsc021:30996838
945dj816:31013170
a69g1124:31058053
dvdeprecation:31068756
dwnewjupytercf:31046870
newcmakeconfigv2:31071590
impr_priority:31102340
nativerepl2:31139839
refactort:31108082
pythonrstrctxt:31112756
flightc:31134773
wkspc-onlycs-t:31132770
wkspc-ranged-c:31125598
fje88620:31121564
notype1:31143045
cc771715:31140165
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere das Problem mit MyWonderfulClass.class.ts und script.ts und befolge dabei die drei Schritte zur Deklarationszusammenführung im Bericht. Verfolge anschließend den Einstiegspunkt für Rename Symbol in diesem Fall und überprüfe, dass Verweise sowohl auf die Klasse als auch auf den Namespace nach der Umbenennung gültig bleiben; das Issue ist abgeschlossen, wenn die importierte Instanz und die Verweise auf MyWonderfulClass.MyWonderfulClassType weiterhin aufgelöst werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100