【发布时间】:2019-02-06 14:16:32
【问题描述】:
我目前正在尝试创建一个小型 npm 包库,其中包含一些用于 Jasmine 测试的实用程序。代码在我的 GitHub https://github.com/DrMueller/MLAH.Testing 中,目前只包含 2 个函数和一个类型。 不幸的是,我并不是 100% 热衷于 d.ts 文件导入的魔力究竟是如何工作的: 根据官方文档:
默认情况下,所有可见的“@types”包都包含在您的 汇编。任何封闭文件夹的 node_modules/@types 中的包 被认为是可见的;具体来说,这意味着包内 ./node_modules/@types/
Therefore, creating a type like
export type SpyOf<T> = {
[Method in keyof T]: jasmine.Spy;
};
我猜,当我删除 typeRoots 时,找到了 jasmine 类型,但我仍然得到
错误 TS2503:找不到命名空间“茉莉花”。
还考虑到其他属性,如 include 或 types,根据文档,它们总是分隔找到的类型,因此不指定它们应该考虑 node_modules/@types 中的所有类型。
目前唯一可行的解决方案是通过手动将其添加到每个文件中
/// <reference path="../../node_modules/@types/jasmine/index.d.ts" />
这适用于编译,但由于创建的 npm 包与代码不在同一个相对文件夹中,因此会引发异常。
是我遗漏了什么,还是茉莉花是某种特殊的模块?
【问题讨论】:
-
当我克隆你的仓库时,在根目录下运行
npm install,并删除src/app/app.component.ts中的<reference>,项目仍然可以使用tsc -p .编译成功。你在做什么不工作? -
hm 有趣,使用 tsc,我得到错误,'baseUrl 不是一个可识别的选项。我通常用'ng build'来构建,你能试试吗?
标签: angular typescript jasmine