[英]Typescript types for code that is not imported by typescript?
这是一个Angular应用程序的问题,但我不认为这是一个角度特定的问题。
我正在开发一个Angular 7应用程序,我正在使用一些库,这些库是通过前端的脚本标签从其他来源(Stripe,recaptcha,googletags等)导入的。 我将在这里使用Stripe作为示例,因为Stripe绝对要求客户端从Stripe.js
导入前端库以实现PCI兼容性,因此从源服务器端不是一个选项。
我已经从DefinitelyTyped安装了Stripe
的类型。 如果我添加declare let Stripe: any;
并且在组件中使用Stripe
,它可以工作,但当然它不是类型安全的。 如果我省略声明,VSCode发现类型很好,编辑器捕获类型错误,但它不会编译,( error TS2304: Cannot find name 'Stripe'.
)可能因为我没有Stripe的import
语句。
有没有办法提示TypeScript它应该使用DefinitelyTyped中的类型来捕获类型错误,而不导入Stripe库本身?
编辑:我收回我所说的关于不认为这是Angular特定的内容。 我现在认为这可能与角度编译过程有关。
我过去遇到了同样的问题,我也发现在不导入实际模块的情况下使用import
类型定义文件是不可能的。
所以,我所做的是,我将 Type Definition文件(通常是index.d.ts
) 复制到我的代码库中。
之后,您可以执行以下操作:
import {SomeType} from "sometype.d.ts"
declare let ObjectImportedFromHTMLScriptTag: SomeType;
然后,您可以使用导入的对象而不会破坏类型安全性。
我的问题的答案似乎在这里: @ types / googlemaps / index.d.ts'不是模块也就是说,我可以使用三斜杠指令,或在root typings.d.ts文件中声明模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.