Zoeken op website

Typescript kan het index.ts-bestand niet oplossen bij het gebruik van een padalias, tenzij het expliciet is opgenomen ($myPackage/index)


Ga uit van de onderstaande projectstructuur:

packages/
   utilities/
      index.ts
   app/
      app.ts
tsconfig.json

Ik heb pad-aliassen gemaakt om gemakkelijker toegang te krijgen tot pakketten tussen elkaar, mijn tsconfig ziet er zo uit

{
  "compilerOptions": {
    "moduleResolution": "node",
    "noEmit": true,
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "allowJs": false,
    "noImplicitAny": true,
    "strict": true,
    "strictNullChecks": true,
    "strictFunctionTypes": true,
    "strictPropertyInitialization": true,
    "noImplicitThis": true,
    "alwaysStrict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "allowSyntheticDefaultImports": true,
    "baseUrl": ".",
    "paths": {
      "$app/*": ["packages/app/*"],
      "$utilities/*": ["packages/utilities/*"],
    }
  },
  "include": [
    "packages/*"
  ]
}

Eindelijk is mijn packages/utilities/index.ts bestand een soort tussenvorm die alle utils importeert en exporteert die ik wil blootstellen, d.w.z.

export { isValidEmail } from '$utilities/validators';
//... etc

Ik dacht in eerste instantie dat mijn app-pakket zoiets zou kunnen doen

import { isValidEmail } from "$utilities";
// Errors Cannot find module '$utilities' or its corresponding type declarations.

Maar het geeft de bovenstaande foutmelding tenzij ik het volledige pad $utilities/index gebruik

Antwoord #1

Ik deed deze truc en het loste mijn probleem op

"paths": {
    "@services": ["src/services"],
    "@services/*": ["src/services/*"],
    "@/*": ["src/*"]
},

Nu kan ik src/services/index benaderen met deze regel

import { useUtil } from '@services';

En het werkt ook als ik toegang wil tot kinderbestanden/-mappen

Ik merkte ook dat padaliassen bovenaan een hogere prioriteit hebben (in intellisense & automatische imports) dan degene die erna komen. Het is dus beter om langere aliassen bovenaan te zetten en kortere aan het einde.

Gerelateerde artikelen