Microsoft/TypeScript

Error message for invalid string literal type could be improved

Open

#10,203 创建于 2016年8月8日

在 GitHub 查看
 (1 评论) (0 反应) (0 负责人)TypeScript (6,726 fork)batch import
Domain: Error MessagesEffort: ModerateExperience EnhancementHelp WantedSuggestion

仓库指标

Star
 (48,455 star)
PR 合并指标
 (平均合并 6天 17小时) (30 天内合并 9 个 PR)

描述

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.

贡献者指南