Typescript中Window对象无Scaledrone属性报错问题求助
解决TypeScript中Scaledrone的类型报错问题
报错Property 'Scaledrone' does not exist on type 'Window & typeof globalThis'.ts(2339)是因为TypeScript的全局类型定义里未包含Scaledrone属性,以下是几种可行的解决方式:
方法1:扩展Window全局接口
在项目中创建或修改一个.d.ts类型声明文件(比如src/types.d.ts),添加对应代码:
// 若通过npm安装了scaledrone包 interface Window { Scaledrone: typeof import('scaledrone').Scaledrone; } // 若通过CDN引入、未安装npm包 interface Window { Scaledrone: new (roomId: string, options?: { data?: unknown }) => void; }
TypeScript会自动识别这个扩展接口,不再抛出类型错误。
方法2:使用类型断言
直接在代码中对window做类型断言,临时绕过类型检查:
// 简单的any断言 drone = new (window as any).Scaledrone('XXXXXXXXXXXXXXXX', { data: meRef.current, }); // 更精确的自定义类型断言 type ScaledroneInstance = { // 可根据Scaledrone实例的实际方法补充类型,比如on、off等 on(event: string, callback: () => void): void; }; type ScaledroneConstructor = new (roomId: string, options?: { data?: unknown }) => ScaledroneInstance; drone = new (window.Scaledrone as ScaledroneConstructor)('XXXXXXXXXXXXXXXX', { data: meRef.current, });
方法3:安装官方类型定义包
如果项目通过npm安装了scaledrone依赖,直接安装对应的类型包即可:
npm install @types/scaledrone --save-dev
安装完成后,TypeScript会自动读取官方类型定义,无需额外配置。
内容的提问来源于stack exchange,提问作者Danko Grgić
相关产品推荐
相关产品推荐

