如何使Typescript提取声明文件?

时间:2018-11-15 16:42:36

标签: typescript ts-node

我的文件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 :(得分:1)

要使typeRoots机制加载声明文件,需要将其命名为index.d.ts并将其放置在{{1}中列出的目录之一的子目录中}} 选项;请参阅documentation。根据存储库中的typeRoots设置,您可以将文件放在typeRoots上。

上面的方法可以工作,但是由于声明文件正在声明模块,因此最好设置模块分辨率来查找声明文件,而不是使用src/types/auth0/index.d.ts,后者主要用于全局声明。为此,请使用baseUrl and paths或为名为typeRoots的本地npm软件包创建package.json文件,然后使用相对路径将软件包注册到主@types/auth0文件中。 / p>