You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Object.values is a ES2017 feature, and BigInt is a ES2020.
Also consider the target is tsconfig.json is es2015, and lib is either not specified or simply contains es2015 and dom.
Expected behavior:
Given the code and the TS configuration above, the type checker should always fails with:
And if you only have typescript as a dependency in package.json, that is indeed what you'll get. So far, so good. See the expected folder of my repro repo.
Actual behavior:
If you have a (direct or indirect) dependency to @types/node, or if any dependency contains a declaration file that has /// <reference lib="es2018" />, /// <reference lib="es2020.bigint" />, etc., the type checker will now stop reporting these errors. See the actual folder of my repro repo.
This seems significant to me because it means that dependencies can silence potential browser incompatibilities. If I specified a target of es2015, with no extra lib, Babel transpiling, or polyfills, I should not be able to compile the code above.
Is there something obvious I'm missing? I realize it's the very design of libbut as explained in #15732, that assumes the project uses polyfills, which is not something that can be enforced/checked by a third-party library at compile time.
Related Issues:
Apologies for the vagueness of the search terms. It's significant enough that it must already exist in an issue or a StackOverflow question, but after spending some time looking, I did not find anything similar.
The only issues that seem somewhat related, but different:
TypeScript Version: 3.8.3
Search Terms: lib target dependencies triple-slash
Code
I have a reproduction repository at https://github.com/astorije/repro-tsc-lib-issue.
Essentially, consider the following code:
Object.values
is a ES2017 feature, andBigInt
is a ES2020.Also consider the
target
istsconfig.json
ises2015
, andlib
is either not specified or simply containses2015
anddom
.Expected behavior:
Given the code and the TS configuration above, the type checker should always fails with:
And if you only have
typescript
as a dependency inpackage.json
, that is indeed what you'll get. So far, so good. See theexpected
folder of my repro repo.Actual behavior:
If you have a (direct or indirect) dependency to
@types/node
, or if any dependency contains a declaration file that has/// <reference lib="es2018" />
,/// <reference lib="es2020.bigint" />
, etc., the type checker will now stop reporting these errors. See theactual
folder of my repro repo.This seems significant to me because it means that dependencies can silence potential browser incompatibilities. If I specified a
target
ofes2015
, with no extralib
, Babel transpiling, or polyfills, I should not be able to compile the code above.Is there something obvious I'm missing? I realize it's the very design of
lib
but as explained in #15732, that assumes the project uses polyfills, which is not something that can be enforced/checked by a third-party library at compile time.Related Issues:
Apologies for the vagueness of the search terms. It's significant enough that it must already exist in an issue or a StackOverflow question, but after spending some time looking, I did not find anything similar.
The only issues that seem somewhat related, but different:
The text was updated successfully, but these errors were encountered: