VSC previews the String()
return type correctly, while ts-loader
in webpack uses a version which doesn't know about generics. The ts-loader
version is ^8.0.14s
and tsc
's version is 4.1.3
.
TSConfig is almost identical in ts-loader and root of the project (noEmit and allowJs are flipped)
{
"compilerOptions": {
"target": "esnext",
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": true,
"skipLibCheck": false,
"allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"sourceMap": true,
"strictNullChecks": true,
"noEmit": true,
"typeRoots": ["src/@types"],
"baseUrl": "/",
"paths": {
"*": ["src/@types/*.d.ts"]
},
"removeComments": true,
"noFallthroughCasesInSwitch": true,
"isolatedModules": true,
"jsx": "preserve"
},
"include": ["src"],
"exclude": ["node_modules", "dist", "src/index.js", "config", "cypress"]
}
The same thing happens when I try to index objects with a string that is typed to be keyof typeof myObject
.
question from:
https://stackoverflow.com/questions/66045933/webpack-ts-loader-confused-about-which-version-of-lib-es-to-use 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…