javascript - Saknas intellisense vid import av .ts-fil i .js-fil


Jag försöker använda tsx för att köra en NodeJS-applikation som består av JavaScript- och Typescript-moduler. JavaScript-modulerna är ESM, inte CommonJS. Till exempel har jag dessa filer:

// provider.ts
export funcA(p: unknown): unknown {...}

// consumer.js
import * as provider from "./provider.ts"

provider.funcA("foo");

Den fungerar väldigt bra med tsx. VScodes intellisense fungerar bra i TS-filer men inte i JS-filer. När jag håller muspekaren över provider visar det import provider och jag har ingen autokomplettering alls. Här är min tsconfig.json:

{
  "compilerOptions": {
    "module": "NodeNext",
    "target": "ESNext",
    "allowJs": true,
    "strict": true,
  },
  "include": [
    <the directory containing both JS and TS files>
  ],
}

Hur kan jag få Intellisense att fungera i VSCode för TS-importer i mina JS-filer?

Svar #1

Jag hittade en lösning. Det verkar som att TypeScript inte kan förstå när jag importerar en .ts-modul.

Jag var tvungen att ta bort .ts-delen av importen. Jag var tvungen att lägga till "moduleResolution": "Node" i min tsconfig.json för att ta bort upplösningsfel.

Jag fick också lite problem med min eslint-konfiguration. Jag installerade paketen @typescript-eslint/parser och eslint-import-resolver-typescript och lade till detta i min .eslintrc.json:

"extends": [
  ...
  "plugin:import/typescript"
],
...
"settings": {
  "node": {
    "tryExtensions": [".js", ".node", ".ts"]
  }
}

Nu fungerar det. Jag får full Intellisense i min JS-fil.