Microsoft/TypeScript

Rename doesn't work on declaration whose name is a string literal

Ouverte

#57 026 ouverte le 11 janv. 2024

 (0 commentaire) (5 réactions) (0 personne assignée)TypeScript (13 395 forks)batch import
Domain: LS: RefactoringsExperience EnhancementHelp WantedSuggestion

Métriques du dépôt

Stars
 (108 860 étoiles)
Métriques de merge PR
 (Merge moyen 6j 17h) (9 PRs mergées en 30 j)

Description

Follow up to https://github.com/microsoft/TypeScript/issues/56052, which was fixed by https://github.com/microsoft/TypeScript/pull/56061. That fix means that rename from string literal values that are contextually typed by the type of the string-literal-named property do work. But renames on the actual property declaration still don't.

interface I {
    "Prop 1 Foo": string
    // ^-- rename here doesn't work
}
declare const fn: <K extends keyof I>(p: K) => void
fn("Prop 1 Foo")

Playground link

As before, if you use constant with a literal type, renaming the literal type does work:

declare const indirect: "Prop 1 Foo"
interface I {
  [indirect]: string
}
// ... same as before ...

Guide contributeur