首页 > 解决方案 > 如何修复:类型“Window”不可分配给类型“typeof globalThis”

问题描述

我正在尝试来自 github 的 Angular 项目。我正在使用节点版本 12、角度 cli 9 和更新的 package.json。

https://github.com/chat21/chat21-web-widget 从这两个文件中,我在构建时遇到错误。 https://github.com/chat21/chat21-web-widget/blob/master/src/app/providers/translator.service.ts https://github.com/chat21/chat21-web-widget/blob/master /src/app/utils/globals.tsLine 31

let windowContext = window;
if (window.frameElement && window.frameElement.getAttribute('tiledesk_context') === 'parent') {
  windowContext = window.parent;
}

错误类型:“Window”不可分配给“typeof globalThis”类型。

windowContext = window.parent;

我认为这是与打字稿有关的问题,但我对此并不熟悉。

标签: node.jsangulartypescript

解决方案


是的,这个错误是预期的。当您创建windowContext变量时,您没有声明类型,因此打字稿推断windowContext的类型为"Window & typeof globalThis"

然后您尝试重新分配变量,但您使用不同的类型重新分配了它。window.parent是“ Window ”类型。所以类型不匹配。

你可以试试这个

    let windowContext: any = window;
     if (window.frameElement && 
      window.frameElement.getAttribute('tiledesk_context') === 'parent') {
       windowContext = window.parent;
     }

推荐阅读