Description
TypeScript Version:
typescript-3.6.0-insiders.20190725
Taken from,
#32028 (comment)
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-
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 install
npm run build
- See
TS2589: Type instantiation is excessively deep and possibly infinite.
- Open VS code
- Navigate to file
tsc
says contains errors - Notice no errors
- Play with return type of function
- Notice inference works correctly
Related Issues:
The merged PR that introduced the error,
#32079 (comment)
The build I am testing,
#32028
Also relevant, #29511
It seems like every few versions, there ends up being a difference between tsc
and tsserver
, regarding the max instantiation depth