如何在TypeScript中使用外部JavaScript文件中的Foo对象?
当然可以解决这个问题!TypeScript报错的核心原因是它无法识别通过<script>标签引入的全局Foo对象的类型——毕竟TS是强类型语言,得先让它知道这个对象的存在和结构才行。下面给你几种实用的解决办法:
临时快速解决:声明全局任意类型
如果你只是想先让代码跑起来,不想花时间写严谨的类型,可以在你的TS文件顶部加上这句声明:declare var Foo: any;这样TS就不会再抛出错误了,不过缺点是会失去类型检查和智能提示,适合快速测试场景。
更严谨的方案:定义具体类型接口
要是想保留TS的类型优势,你可以给Foo定义精准的类型结构。比如在TS文件里先声明接口和全局变量:// 先定义Foo.create方法的参数类型 interface FooCreateOptions { title: string; description: string; // 可以根据实际需求补充其他属性 } // 声明全局的Foo对象类型 declare var Foo: { create(element: string, options: FooCreateOptions): void; // 如果Foo还有其他方法,也可以在这里补充定义 };这样你调用
Foo.create()时不仅不会报错,还能获得智能提示和类型校验。最佳实践:创建独立类型声明文件
如果你在多个文件里都要用到Foo,建议单独创建一个类型声明文件(后缀为.d.ts),比如foo.d.ts,内容如下:declare namespace Foo { interface CreateOptions { title: string; description: string; } function create(element: string, options: CreateOptions): void; }把这个文件放在你的TS项目目录中,TypeScript会自动识别它,之后在任何文件里使用
Foo都能获得完整的类型支持。
内容的提问来源于stack exchange,提问作者Seize Duh
相关产品推荐
相关产品推荐

