Property ‘webkit‘ does not exist on type ‘Window & typeof globalThis‘.

在 Vue3 + Vite + TS 的项目中,接入 MicroApp 微前端时,编辑器出现 TS2339: Property ‘webkit’ does not exist on type ‘Window & typeof globalThis’. 的错误提示。
问题原因
项目中在 window 上挂载了一个 webkit 方法,但是 TS 并不知道这个方法的存在,所以会报错。
问题解决
在 shims-vue.d.ts 或 vite-env.d.ts 文件中,当然也可以在 src 目录下新建一个 types.d.ts 的类型文件,添加如下代码:

interface Window {
  webkit: any;
  opera: any;
  MSStream: any;
  readonly '__MICRO_APP_ENVIRONMENT__': any
}

注意:假如xxx.d.ts文件不在src目录下,则需要在根目录的 tsconfig.json 文件中,指定其所在目录,如下图所示
在这里插入图片描述

这个问题看起来是在TypeScript编译时遇到的错误,"Property 'fetch' does not exist on type 'typeof http'" 表示你在尝试访问`http`模块的`fetch`属性,但是这个属性实际上并不在这个模块的类型声明中。 解决此类问题通常需要按照以下步骤操作: 1. **检查导入**:确保你正确地引入了支持`fetch`的库,如`node-fetch`或者原生的浏览器`window.fetch`。如果是使用`node-fetch`,应像这样导入: ```typescript import fetch from 'node-fetch'; ``` 2. **添加类型声明**:如果你使用的库没有包含默认的TypeScript类型定义,可能需要手动安装一个类型定义文件,如`@types/node-fetch`,然后在你的项目中引入它以告知TypeScript fetch的类型信息。 ```sh npm install @types/node-fetch --save-dev ``` 3. **更新类型声明**:确认`@types/node-fetch`已经正确安装并生效后,你需要更新`http`类型的定义,使其包括`fetch`方法。 ```typescript declare module 'node-fetch' { interface Response { ... } function fetch(url: string): Promise<Response>; } ``` 4. **使用类型断言**:如果无法修改库的类型定义,也可以在需要使用`fetch`的地方通过类型断言告诉TypeScript你知道你要做什么: ```typescript const response = (fetch('https://api.example.com') as typeof import('node-fetch').default).then(...); ``` 完成上述步骤后,你应该可以正常访问`fetch`方法而不会收到类型的错误提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值