Пользовательский путь tsconfig.json typeroots не выбран

У меня есть несколько пользовательских файлов .d.ts, и я хочу, чтобы tsc подбирал эти файлы при компиляции. Чтобы это сделать, я изменяю файл tsconfig.file, чтобы включить следующее:

"typeRoots": [
      "../node_modules/@types",
      "./app/modules"
    ]

./app/modules — это место, где находится мой пользовательский файл .d.ts. Внутри папки ./app/modules у меня есть следующий файл myModule.d.ts

export declare module myModule {
  function Login();
  function Logout();
}

Теперь внутри моего другого машинописного файла у меня есть следующий импорт

import { myModule } from 'myModule';

Здесь я получаю следующую ошибку: Не удается найти модуль «myModule».


person user3547774    schedule 21.12.2016    source источник
comment
У меня точно такая же проблема, и я написал об этом. Мне typeRoots не подходит. В качестве временного обходного пути я добавил сценарий после установки, который копирует типы из моего вложенного каталога в каталог @types в корне.   -  person httpete    schedule 30.01.2017


Ответы (1)


Я нашел конфиг, который исправляет это. Обратите внимание на свойства paths и baseUrl:

{
  "version": "2.1.5",
  "compilerOptions": {
    "module": "commonjs",
    "target": "ES5",
    "removeComments": true,
    "preserveConstEnums": true,
    "inlineSourceMap": true,
    "lib": ["es6", "dom"],
    "typeRoots": ["src/subfolder/node_modules/@types"],
    "moduleResolution": "node",
    "baseUrl": "./",
    "paths": {
      "*": ["src/subfolder/node_modules/@types/*", "*"]
    }
  },
  "exclude": ["node_modules", "src/subfolder/node_modules"]
}
person httpete    schedule 31.01.2017
comment
похоже, это работает для глобальных типов (как представлено синтаксисом объявления модуля), но не для файлов объявлений, содержащих модули? - person gaurav5430; 14.03.2021