microsoft / microsoft/TypeScript
Error message for invalid string literal type could be improved
オープン
まだ誰も着手していません。
Domain: Error Messages
Effort: Moderate
Experience Enhancement
Help Wanted
Suggestion
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.3k
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 117
説明
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.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず自己完結型の TypeScript スニペットをコンパイルし、overload エラーを再現します。コンパイラーが報告されるパラメーター型をどのように選択するかを追跡し、次に診断に関連するリテラルの候補が含まれるようにして、メッセージが issue に示されている期待される動作と一致することを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript
- 領域
- compilers
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 35/100