首页 > 解决方案 > 打字稿不导入的代码的打字稿类型?

问题描述

这是 Angular 应用程序的一个问题,但我不认为这是一个特定于 Angular 的问题。

我正在开发一个 Angular 7 应用程序,并且正在使用一些库,这些库是通过前端的脚本标签从其他来源(Stripe、recaptcha、googletags 等)导入的。我将在这里使用 Stripe 作为示例,因为 Stripe 绝对要求客户端从其导入前端库以Stripe.js符合 PCI 标准,因此从源服务器端不是一个选项。

我已经安装了Stripe来自definitelyTyped 的类型。如果我在组件中添加declare let Stripe: any;和使用Stripe,它可以工作,但当然它不是类型安全的。如果我省略了声明,VSCode 会发现类型很好,并且编辑器会捕获类型错误,但它不会编译,(error TS2304: Cannot find name 'Stripe'.)可能是因为我没有import关于 Stripe 的声明。

有什么方法可以提示 TypeScript 它应该使用来自definitelyTyped 的类型来捕获类型错误,而不需要导入 Stripe 库本身?

编辑:我收回我所说的不认为这是 Angular 特定的。我现在认为这可能与角度编译过程有关。

标签: angulartypescriptangular7

解决方案


我的问题的答案似乎在这里:@types/googlemaps/index.d.ts' is not a module 也就是说,我可以使用三斜杠指令,或者在根 typings.d.ts 文件中声明模块。


推荐阅读