在哪里/如何为私有的、范围内的 npm 模块添加 d.ts?

Dav*_*ier 2 typescript typescript1.8 typescript-typings

我正在尝试将 Javascript 项目移植到 Typescript。我有一个名为如下的依赖项:@myscope/utils

来自此的文件被导入到 ts 文件中,如下所示:

import date = require('@myscope/utils/date');
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,出现以下错误:

src/subfolder/something.ts(12,23): error TS2307: Cannot find module '@myscope/utils/date'.
Run Code Online (Sandbox Code Playgroud)

如何为这样的私有模块添加自己的类型?

Dav*_*ier 5

我自己设法解决了这个问题。我参考了有关编写声明文件的信息

获取要解析的模块的关键是声明一个模块,其名称为包的完整路径。我index.d.ts为该模块创建了一个文件,并将其添加到我filestsconfig.json.

该文件包含以下声明:

declare namespace date {
  function now(): number;
}

declare module "@myscope/utils/date" {
   export = date; 
}
Run Code Online (Sandbox Code Playgroud)

虽然没有必要,但我像打字一样构建了导入。在移植应用程序的其余部分后,我可能会稍后进行简化。

我创建了以下文件:

mytypings/index.d.ts
mytypings/modules/@myscope/utils/index.d.ts
Run Code Online (Sandbox Code Playgroud)

请注意,utils 路径中没有日期部分。

mytypings/index.d.ts包含参考路径mytypings/modules/@myscope/utils/index.d.ts,然后添加到 的部分tsconfig.json

我的计划是以同样的方式添加其他库。