Skip to content

Specialized error message when asking for a named object property on a tuple? Β #56825

Open
@JoshuaKGoldberg

Description

@JoshuaKGoldberg

πŸ” Search Terms

named object property tuple type lookup

βœ… Viability Checklist

⭐ Suggestion

Developers sometimes accidentally use [] to declare a type instead of {}. Later, when they try to access a property by string name, the error message doesn't indicate that it's a [] tuple instead of {} object. Can we get a specific error message for that example?

πŸ“ƒ Motivating Example

The following Label type alias seems to describe a reasonable tuple at first. But later on we see that the developer might have meant to describe an object type.

type Label = [
  text: string;
];

declare const label: Label;

label.text;
// Property 'text' does not exist on type 'Label'.

How about a specialized diagnostic indicating 'Label' is a tuple?

Property 'text' does not exist on type 'Label'.
  'Label' is a tuple type with numeric keys, not an object type with string keys.

...bikeshedding needed on that message πŸ€”

πŸ’» Use Cases

  • When a developer meant to write an object type but used a tuple instead
  • When a developer misread a tuple type as an object type
  • When a developer is new to tuples and/or types, and confused the two's syntaxes

Example real-world developer pain point (posted with permission): https://twitter.com/yagiznizipli/status/1736762337716039967

Metadata

Metadata

Labels

Experience EnhancementNoncontroversial enhancementsRescheduledThis issue was previously scheduled to an earlier milestoneSuggestionAn idea for TypeScript

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions