CSh*_*ark 1 node-modules typescript angular
我发现了许多关于如何设置模块增强文件以向 node_module 添加功能的示例,但我对如何将它们包含在打字稿编译中有点困惑。我是否应该像这样导入在顶部main.ts(或public_api.ts库)进行增强的文件:
import './moduleaugmentationfile';
Run Code Online (Sandbox Code Playgroud)
或者是否有其他标准方法可以使此附加功能在整个应用程序中可用。
编辑:
这是一个示例应用程序。示例模块增强位于moduleaugmentation.ts. 我在 中添加了一条评论main.ts,解释了我对如何最好地包含模块增强的困惑。
你的例子看起来不错,这也是增强模块的正确方法。
模块扩充 = 包维护者已经提供了给定 npm 包的类型声明,您想要扩展它。这里重要的是在顶层有一个export/将文件分配给模块范围,否则编译器会期望一个环境模块声明(包不存在类型定义)。import
应该不需要手动包含类型定义(我认为在过去,这可以使用三重斜杠指令来完成,您不使用import全局声明)。如今,编译器使用自动包含(尽管我不太确定不同的 Angular 配置):
如果“files”和“include”均未指定,则编译器默认包含包含目录和子目录中的所有 TypeScript(.ts、.d.ts 和 .tsx)文件,但使用“exclude”属性排除的文件除外。
关于 RxJS 使用的最后一些提示:您可以Observable直接从包根目录导入(请参阅此处以获取 RxJS v6 文档中的示例),例如
import { Observable } from "rxjs"
Run Code Online (Sandbox Code Playgroud)
,因此您不必依赖包内部。
import {Observable} from "rxjs"
declare module "rxjs" {
interface Observable<T> {
subscribeAndLog: (a: string) => void
}
}
Run Code Online (Sandbox Code Playgroud)
干杯,希望有帮助。
| 归档时间: |
|
| 查看次数: |
2569 次 |
| 最近记录: |