Typescript — как правильно задать алиасы для модулей?

Играюсь с ангуларом и тайпскриптом.

Есть папка scripts/ в которой лежит основной компонент ангулара, а так же папки Services/ и Components/.
В папках Services/ и Components/ лежат соответственно сервисы и директивы.

Сейчас, для того, что бы мне из компонента импортировать сервис, мне приходится импортировать по пути вида
import { SomeService } from '../../Services/SomeService';


Как мне сделать алиас для папки Services что бы импорт имел вид
import { SomeService } from 'services';

Пока что я создал 2 файла:
services.d.ts и components.d.ts
с содержимым (на примере services.d.ts):
declare module 'services' {
    export { FileUploadService } from './Services/FileUploadService';
    export { RedirectService } from './Services/RedirectService';
}


Но тогда, у меня сыпятся ошибки вида
resources/assets/typescript/components.d.ts(2,5): error TS2439: Import or export declaration in an ambient module declaration cannot reference module through relative module name.
resources/assets/typescript/components.d.ts(3,5): error TS2439: Import or export declaration in an ambient module declaration cannot reference module through relative module name.
resources/assets/typescript/components.d.ts(3,33): error TS2307: Cannot find module './Components/UI/ProgressBar/ProgressBar'.
resources/assets/typescript/services.d.ts(2,5): error TS2439: Import or export declaration in an ambient module declaration cannot reference module through relative module name.
resources/assets/typescript/services.d.ts(2,39): error TS2307: Cannot find module './Services/FileUploadService'.
resources/assets/typescript/services.d.ts(3,5): error TS2439: Import or export declaration in an ambient module declaration cannot reference module through relative module name.
resources/assets/typescript/services.d.ts(3,37): error TS2307: Cannot find module './Services/RedirectService'.


Как сделать правильно?
  • Вопрос задан
  • 1212 просмотров
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Ну если вы ts грузите и собираете с помощью SystemJS, то там можно наколбасить алиасов сколько угодно. Если tsc, то вроде бы нет такого.
Ответ написан
Комментировать
Babayka_od
@Babayka_od
Full-stack developer
Если используется tsc, то можно в tsconfig.json установить baseUrl: “src/“ и тогда будут доступны импорты вида
import foo from “components/foo”

Папка components находится в src
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы