前提

本来是想给全局window挂载一个属性,但是vite这个不知道怎么,采用之前的全局类型写法一直类型推断不出来,头疼了好久,也没想到啥原因,先把问题解决方案记一下。

解决方案

创建了一个global.d.ts文件,内容如下:


/** 安卓套壳包提供的api */
interface AndroidEMInterface {
  /** 清理缓存方法 */
  cleanCache(): void;
}

declare global {
  interface Window {
    AndroidEM?: AndroidEMInterface;
  }
}

declare const AndroidEM: undefined | AndroidEMInterface;

这样声明,直接使用AndroidEM可以,但是通过window.AndroidEM就会出现错误。

最后只能才用这种方式来声明window的属性:

declare interface Window {
  AndroidEM?: AndroidEMInterface;
}

这样写就没问题了,个人怀疑可能是全局命名空间的问题导致的,暂时不清楚具体原因,等搞明白了再贴上。

分类: TypeScript 标签: TypeScriptdeclare全局声明

评论

暂无评论数据

暂无评论数据

目录