我目前正在尝试创建一个小的npm包库,其中包含一些用于Jasmine测试的实用程序。代码在我的GitHub https://github.com/DrMueller/MLAH.Testing中,目前只包含2个函数和一个类型。不幸的是,我并不是100%热衷于d.ts文件导入的神奇功能:根据官方文档:
默认情况下,所有可见的“@types”包都包含在您的编译中。任何封闭文件夹的node_modules / @类型中的包被视为可见;具体来说,这意味着./node_modules/@types/中的包
Therefore, creating a type like
export type SpyOf<T> = {
[Method in keyof T]: jasmine.Spy;
};
我猜,当我删除typeRoots时,会发现茉莉花的类型,但我仍然会得到
错误TS2503:找不到命名空间'jasmine'。
根据文档,还考虑其他属性(如include或types),它们总是分隔找到的类型,因此不指定它们应该考虑node_modules / @ types中的所有类型。
到目前为止唯一的解决方案是在每个文件中手动添加它
/// <reference path="../../node_modules/@types/jasmine/index.d.ts" />
这适用于编译,但由于创建的npm包与代码不在同一个相对文件夹中,因此会抛出异常。
我错过了什么,或者是茉莉花某种特殊的模块?
我担心解决这个问题需要我没有的Angular特定知识,但是没有:我看到angular.json
引用了src/tsconfig.app.json
,我可以通过运行tsc -p src/tsconfig.app.json
来重现问题。
从"types": []
删除src/tsconfig.app.json
线。这条线正在关闭所有可见的@types
包的自动加载。