Skip to content

Error message for invalid string literal type could be improved #10203

Open
@NoelAbrahams

Description

@NoelAbrahams

TypeScript Version: 2.0 Beta

Code

// A *self-contained* demonstration of the problem follows...
interface Foo {

    method(value: 'aa'): void;
    method(value: 'bb'): void;
    method(value: 'zz'): void;
    method(value: 'last'): void;
}

const x: Foo = {} as any;

x.method('bar'); // Error line

Expected behavior:

A more meaningful error message, e.g.

Argument of type "'bar'" is not assignable to parameter of type "'aa' | 'bb'|...|'last'"

Actual behavior:

Argument of type "'bar'" is not assignable to parameter of type "'last'"

I am finding this error message confusing, because the compiler picks the value of the last overload in order to report the error, and there is nothing special about the last value.

Activity

added
SuggestionAn idea for TypeScript
Effort: ModerateRequires experience with the TypeScript codebase, but feasible. Harder than "Effort: Casual".
on Aug 8, 2016
added this to the Community milestone on Aug 8, 2016
added
Needs ProposalThis issue needs a plan that clarifies the finer details of how it could be implemented.
on Aug 8, 2016
DanielRosenwasser

DanielRosenwasser commented on Aug 8, 2016

@DanielRosenwasser
Member

I've rated this at moderate difficulty because overload resolution isn't the simplest part of the compiler.

For what it's worth, I don't think the suggested error message is the best because it implies you could actually pass in a value of type "aa" | "bb" | ... | "last", but that's not the case.

Also see @sandersn's issue at #6541.

added and removed
Needs ProposalThis issue needs a plan that clarifies the finer details of how it could be implemented.
on Jul 29, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Domain: Error MessagesThe issue relates to error messagingEffort: ModerateRequires experience with the TypeScript codebase, but feasible. Harder than "Effort: Casual".Experience EnhancementNoncontroversial enhancementsHelp WantedYou can do thisSuggestionAn idea for TypeScript

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @DanielRosenwasser@NoelAbrahams@RyanCavanaugh

        Issue actions

          Error message for invalid string literal type could be improved · Issue #10203 · microsoft/TypeScript