tsc and tsserver have different ideas of excessively deep types
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- バグ
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- typescript
- 領域
- compilers
調査の方向性
提示されている npm install/build と VS Code の再現手順から始め、その後 tsc と tsserver の診断結果を比較します。PR 32079 と関連する issue 29511 で説明されている挙動を確認してください。完了条件は、同じプロジェクトに対して両方のツールが一貫して excessively deep type エラーを報告することです。
索引モデルが issue の本文から書いたものです。
説明
TypeScript Version:
typescript-3.6.0-insiders.20190725
Taken from,
https://github.com/microsoft/TypeScript/pull/32028#issuecomment-515234327
Search Terms:
max instantiation count, max instantiation depth, tsc, tsserver
Code
I've reduced the 40-subproject monorepo to just small parts of 2 subprojects.
Here is a snippet of the problem,
/**
*
* ```json
* //tsconfig-base.json
* "disableSourceOfProjectReferenceRedirect": true,
* ```
*
* ```json
* //package.json
* "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/37759/artifacts?artifactName=tgz&fileId=2A7E3F3E93DD6F833D63A63F3A7A21707B3F57B08FCA5C93A8F1848556D8141F02&fileName=/typescript-3.6.0-insiders.20190725.tgz"
* ```
*
* -----
*
* VS Code: OK!
* Type inference OK!
*
* -----
*
* `tsc` gives me,
*
* ```js
* src/blah.ts:11:21 - error TS2589: Type instantiation is excessively deep and possibly infinite.
*
* 11 export const json = tm.deepMerge(
* ~~~~~~~~~~~~~
* 12 base.json,
* ~~~~~~~~~~~~~~
* ...
* 31 s.convertBlahType.toStr.BLAH
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 32 );
* ~
* ```
*/
export const json = tm.deepMerge(
/*snip*/
);
const x = json("", "");
if (x.foo != undefined) {
if (x.foo.bar != undefined) {
//Correctly infers `string`
//So, 14M type instantiations is okay with VS code
x.foo.bar.baz
}
}
Expected behavior:
If tsc gets the error,
TS2589: Type instantiation is excessively deep and possibly infinite.
Then tsserver should also get the error
Actual behavior:
tsc gets the error, but tsserver does not (or at least VS code infers the type correctly without errors)
Playground Link:
-None-
@sheetalkamat
The project involved contains code related to a company project.
So, I really do not want to upload it publicly, if possible.
I could mangle the variable names so that they're meaningless but if I can just email the parts of the project that are involved, that would be nice.
Repro steps:
npm installnpm run build- See
TS2589: Type instantiation is excessively deep and possibly infinite. - Open VS code
- Navigate to file
tscsays contains errors - Notice no errors
- Play with return type of function
- Notice inference works correctly
Related Issues:
The merged PR that introduced the error,
https://github.com/microsoft/TypeScript/pull/32079#issuecomment-515334873
The build I am testing,
https://github.com/microsoft/TypeScript/pull/32028
Also relevant, https://github.com/microsoft/TypeScript/issues/29511
It seems like every few versions, there ends up being a difference between tsc and tsserver, regarding the max instantiation depth
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.4k
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 117
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/TypeScript のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
microsoft/TypeScript#64322 · コメント 2 件 · リアクション 1 件 · 担当者 2 名 ·
-
Possible Improvement
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
microsoft/TypeScript#64278 · コメント 1 件 · リアクション 1 件 ·
-
Docs
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
microsoft/TypeScript#64118 · コメント 1 件 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
microsoft/TypeScript#64094 ·
-
Docs
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
microsoft/TypeScript#63959 · コメント 5 件 ·
microsoft/TypeScript の issue をすべて見る
似ている issue
-
optimization optimization:agents-md-curator
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
githubnext/gh-aw-cao#13143 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
blinklabs-io/bursa#904 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
yanet-platform/ipfw-go#129 ·
-
bug confmap/provider/googlesecretmanagerprovider needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
open-telemetry/opentelemetry-collector-contrib#51273 · コメント 2 件 ·
-
bug: AI Gateway client filter lists "Unknown" twice when NULL and literal Unknown clients coexist オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100