Typescript nevie vyriešiť súbor index.ts pri používaní aliasu cesty, pokiaľ nie je explicitne zahrnutý ($myPackage/index)
Predpokladajte nasledujúcu štruktúru projektu:
packages/
utilities/
index.ts
app/
app.ts
tsconfig.json
Vytvoril som aliasy ciest, aby som mohol ľahšie pristupovať k balíkom medzi sebou, môj tsconfig vyzerá takto
{
"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/*"
]
}
Nakoniec je môj súbor packages/utilities/index.ts
export { isValidEmail } from '$utilities/validators';
//... etc
Spočiatku som si myslel, že môj balík aplikácie bude schopný urobiť niečo takéto
import { isValidEmail } from "$utilities";
// Errors Cannot find module '$utilities' or its corresponding type declarations.
Ale vyhodí chybu s vyššie uvedenou správou, pokiaľ nepoužijem úplnú cestu $utilities/index
Odpoveď č. 1
Urobil som tento trik a vyriešil môj problém
"paths": {
"@services": ["src/services"],
"@services/*": ["src/services/*"],
"@/*": ["src/*"]
},
Teraz môžem pristupovať k src/services/index týmto riadkom
import { useUtil } from '@services';
A funguje to aj vtedy, ak chcem pristupovať k podriadeným súborom/zložkám
Tiež som si všimol, že aliasy ciest na vrchu majú prednosť (v intellisense a automatických importoch) pred tými, ktoré sú až potom. Preto je lepšie dať dlhšie aliasy hore a kratšie na koniec.
