Microsoft/TypeScript

Error message displays computed name '[attr]' instead of key value

Open

#57.653 aberto em 5 de mar. de 2024

Ver no GitHub
 (3 comments) (0 reactions) (0 assignees)TypeScript (6.726 forks)batch import
Experience EnhancementHelp WantedSuggestion

Métricas do repositório

Stars
 (48.455 stars)
Métricas de merge de PR
 (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)

Description

🔎 Search Terms

computed property, error message

🕗 Version & Regression Information

  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about computed properties

⏯ Playground Link

https://tsplay.dev/WyV2bw

💻 Code

type Unit =
  | {
      name: string;
      stength: number;
    }
  | {
      name: string;
      magic: number;
    };

const createUnit = (
  name: string,
  attr: "strength" | "magic",
  power: number,
): Unit => {
  return attr === "strength"
    ? { name, [attr]: power } // <-- error here
    : { name, [attr]: power };
};

🙁 Actual behavior

Error message displays "Object literal may only specify known properties, and '[attr]' does not exist in type 'Unit'".

🙂 Expected behavior

Error message should display that "strength" doesn't exist on Unit. (and possibly even recommend "stength" instead)

Additional information about the issue

No response

Guia do colaborador