Property 'xxx' does not exist on type 'Window & typeof globalThis'

栏目: eslint 发布时间:2023-03-04

先看一段 typescript 报错信息:

ERROR in src/services/no-captcha.service.ts:34:12

TS2339: Property 'AWSC' does not exist on type 'Window & typeof globalThis'.
  > 34 |     window.AWSC.use('nvc', (state: any, module: any) => {
       |            ^^^^
    35 |       window.nvc = module.init({

上述代码中从 window 对象上获取 AWSC 方法,AWSC 不是 window 对象上的原生方法,在 ts 中直接调用 window 对象的非原生方法或属性会报错。

我们需要手动给 window 对象声明该方法或属性。

本文给大家介绍 2 种解决方案:

解决方法一

在项目根目录或 src 目录下创建声明文件,比如 window.d.ts

interface Window {
  // 对你要从 window 对象上获取的方法或属性进行声明
  AWSC?: any;
}

需要特别注意的是,项目根目录下的 tsconfig.json 文件中的 include 配置项要包含该文件

示例:

// tsconfig.json
{
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx"
  ]
}

解决方法二

在报错的 ts 文件中添加下列代码:

declare const window: any

以上就是 ts 报错 Property 'xxx' does not exist on type 'Window & typeof globalThis' 的解决方法,祝你好运!

本文地址:https://www.tides.cn/p_eslint-Property-xxx-does-not-exist-on-type-Window-typeof-globalThis

标签: TS2339