如何使用 TS 覆盖全局变量定义

How to override global variable definitions using TS

对于我们工作中的应用程序,我想鼓励人们使用围绕 localStorage 的包装器,它会自动转换 to/from JSON(并且还进行了类型检查)。我试图覆盖 window.localStorage:

的全局 TS 定义
declare global {
  interface Window {
    localStorage: null,
  }
}

但这并没有真正做任何事情 - 有没有办法阻止使用 window.localStorage 进行编译,甚至更好地向用户发出有用的警告,说明为什么它不编译?

好的,没关系,这确实有效,但我必须明确导入文件:

import './our-defs.d.ts'

但是,如果有人知道如何以某种方式提供自定义错误消息,那就太棒了。

假设你只是把

 interface Window {
    localStorage: null,
  }

global 的声明文件中,并将该文件放在 TSC 编译器(VS 代码 linter)知道的项目中的某个位置,那么您甚至不需要 import './our-defs.d.ts'