Как заставить Typescript подобрать файл декларации? - PullRequest
0 голосов
/ 15 ноября 2018

Мой файл src/auth/ManagementAPI.ts использует Auth0. Мне нужно использовать свой собственный файл декларации, и я создал src/@types/auth0.d.ts.

Однако, когда я запускаю ts-node, я получаю эту ошибку:

TSError: ⨯ Unable to compile TypeScript:
auth/ManagementAPI.ts(1,69): error TS7016: Could not find a declaration file for module 'auth0'. '/Users/danrumney/WebstormProjects/ohana/node_modules/auth0/src/index.js' implicitly has an 'any' type.
  Try `npm install @types/auth0` if it exists or add a new declaration (.d.ts) file containing `declare module 'auth0';

Я обновил tsconfig.json файл, включив в него:

"typeRoots": [
    "./node_modules/@types",
    "./src/@types"
]

Мой файл декларации выглядит так:

declare module 'auth0' {
  /*...*/
}

Почему эту декларацию не забирают?

Я создал пример репозитория здесь: https://bitbucket.org/ohanapediatrics/so-demo/src/master/

1 Ответ

0 голосов
/ 15 ноября 2018

Чтобы механизм typeRoots мог загрузить ваш файл декларации, он должен иметь имя index.d.ts и помещаться в подкаталог одного из каталогов, перечисленных в опции typeRoots;см. документацию .Основываясь на настройке typeRoots в вашем хранилище, вы можете поместить файл в src/types/auth0/index.d.ts.

. Выше будет работать, но так как ваш файл декларации объявляет модуль, было бы лучше настроитьразрешение модуля для поиска файла объявлений вместо использования typeRoots, которое в основном предназначено для глобальных объявлений.Для этого либо используйте baseUrl и paths, либо создайте файл package.json для локального пакета npm с именем @types/auth0 и зарегистрируйте пакет в основном файле package.json, используя относительный путь.

...