microsoft / microsoft/TypeScript

@ts-ignore is broken in 3.6 when code line is broken into 2 lines

オープン
#33,256 コメント 10 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Needs Proposal Suggestion
主要言語
Go
スター
111k
フォーク
14.3k
平均マージ
1日 19時間
マージ済み PR(30日)
117

説明

Search Terms:
@ts-ignore
ts-ignore
ignore
multiline
Code

const veryLongStructureNameWithFooInside = {
  foo: (x: number): Promise<number> => {
    return Promise.resolve(x);
  },
};
// @ts-ignore
veryLongStructureNameWithFooInside
  .foo() // Notice the line break here caused by prettier
  .then((result) => {
    console.log(result);
  })
  .catch((err) => {
    console.log(err);
  });

Expected behavior:

There should be no errors as @ts-ignore is set on the function call (works in 3.5.2)

Actual behavior:

In next version the following error occurs:

error TS2554: Expected 1 arguments, but got 0.

   .foo()
      ~~~~~

      foo: (x: number): Promise<number> => {
               ~~~~~~~~~
    An argument for 'x' was not provided.

Playground Link:
playground

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

リンク先のPlaygroundと提供された複数行の@ts-ignore再現コードから始め、TypeScript 3.5.2と3.6の動作を比較します。ディレクティブが分割された呼び出しにどのように関連付けられるかを追跡し、そのうえで、関係のないコードに対する診断を維持しながら、例でエラーが報告されないことを確認します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
typescript
領域
compilers
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
42/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。