如何让 Typescript 获取声明文件?

How do I make Typescript pick up a declaration file?

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

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

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