Skip to content

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

@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
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions