4

我的文件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/

4

1 回答 1

11

对于typeRoots加载声明文件的机制,它需要被命名index.d.ts并放置在选项中列出的目录之一的子目录typeRoots中;请参阅文档。根据typeRoots存储库中的设置,您可以将文件放在src/types/auth0/index.d.ts.

以上将起作用,但是由于您的声明文件正在声明一个模块,因此最好设置模块解析来查找您的声明文件而不是 using typeRoots,后者主要用于全局声明。为此,请使用baseUrlpathspackage.json或为名为的本地 npm 包创建一个文件,并使用相对路径@types/auth0在主文件中注册该包。package.json

于 2018-11-15T19:12:10.277 回答