Angular库中的相对@Types导入

问题描述 投票:1回答:1

我目前正在尝试创建一个小的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 typescript jasmine
1个回答
2
投票

我担心解决这个问题需要我没有的Angular特定知识,但是没有:我看到angular.json引用了src/tsconfig.app.json,我可以通过运行tsc -p src/tsconfig.app.json来重现问题。

"types": []删除src/tsconfig.app.json线。这条线正在关闭所有可见的@types包的自动加载。

© www.soinside.com 2019 - 2024. All rights reserved.