【问题标题】:specifying directory for a local .d.ts type file in typescript在打字稿中为本地 .d.ts 类型文件指定目录
【发布时间】:2018-08-30 16:21:05
【问题描述】:

在过去的几天里,我一直在尝试为我在 npm 上找到并用于 angular 4 项目 (creating typescript .d.ts for third-party library) 的一个简单库创建一个 .d.ts。我能够创建这样的声明文件,并且我认为我遇到的另一个问题,将声明文件移动到更合适的目录,会相当简单。

在处理原始问题时,我只是在<root>/node_modules/@types 下创建了 .d.ts 声明文件以及我下载但未创建的类型声明文件。我这样做是因为很明显,我尝试将声明文件放在另一个目录中的尝试不起作用,这似乎是次要问题。一旦我解决了主要问题,我就解决了次要问题。我找不到任何可以添加位置来搜索声明文件的内容。我在tsconfig.json 中找到了一个听起来很有希望的设置,

"typeRoots": [
  "node_modules/@types",
  "hmm/@types"
],

这里有一个实验值,但该值并没有达到它听起来应该做的事情。事实上,我可以删除列表中的所有值并且不会得到任何不同的行为,包括其他类型库。 (后来我发现它仅用于解析 /// <reference=... 指令的目录。)

经过大量实验和对tsc 代码的一些扫描后,我偶然发现如果包含附加打字稿声明文件的目录包含node_modules/@types。 tsc 会找到它们并将它们视为声明文件。除了<root>/npm_modules/@types,我还创建了<root>/src/npm_modules/@types,一切都按预期工作。我对目录名称不满意,所以我尝试了<root>/src/@types/npm_modules/@types,但失败了。

我所有的构建都是通过 angular-cli ng 进行的,因此 ng 可能会秘密创建它使用的配置文件,而不是我看到的配置文件,但我认为情况并非如此。

有没有办法为 tsc 配置额外的类型声明文件,或者让 tsc 识别某些目录? tsconfig.json 上有一个“types”参数,但这似乎意味着只使用那些类型文件,我想另外使用一些类型文件。理想情况下,我想我想要一个类似于:<root>/@types/library-package-name 的目录结构。这可能吗?

【问题讨论】:

标签: typescript


【解决方案1】:

经过更多的研究和反思,我认为将环境声明文件放置在第三方库只能通过将文件放在名为“node_modules/@types/”的目录中的某个位置来完成-party 库正在使用,或者在其父目录之一之外。如果使用 Angular 5 示例,组件 SimpleComponent(在 src/app/simple/simple.component.ts 中)导入了库“chi-squared-test” , 环境声明文件, chi-squared-test/index.d.ts, 可以放在: node_modules/@types/chi-squared-test/index.d.ts (安装的), 在 src/node_modules /@types/chi-squared-test/index.d.ts,在 src/app/node_modules/@types/chi-squared-test/index.d.ts 或 src/app/simple/node_modules/@types/ chi-squared-test/index.d.ts。我已经验证 src/node_modules/@types 可以工作。documentation from typescript here 说其他人也应该可以工作,但我没有测试过。

我看到一些帖子向我建议,应该能够通过使用“typeRoots”配置值将声明文件放在不包含“node_modules/@types”的目录中,但我无法让它工作.在这一点上,我知道添加环境类型声明文件(.d.ts)的唯一方法是将它们放在从包含需要声明的文件到项目根目录的路径上名为“node_modules/@types”的子目录中.

这可能需要对您的 .gitignore 文件进行一些处理。默认情况下,我相信它会忽略路径中包含“node_modules”的子目录。在大多数情况下,我希望您希望将私有库声明提交给 git,因此您必须调整 .gitignore 以包含这些目录(像“!src/node_modules”这样的行应该可以工作)。

【讨论】:

    猜你喜欢
    • 2018-03-04
    • 2020-10-14
    • 2020-09-08
    • 2016-09-02
    • 2019-01-02
    • 1970-01-01
    • 2021-07-08
    • 2020-04-30
    • 2017-02-20
    相关资源
    最近更新 更多