【发布时间】: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