首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TypeScript中为WeChat小程序定义全局变量

在TypeScript中为WeChat小程序定义全局变量
EN

Stack Overflow用户
提问于 2020-02-22 02:19:31
回答 1查看 349关注 0票数 1

亲爱的StackOverflow用户:

我为浏览器WeChat小程序开发了一个模块。该模块用多个TypeScript编写,并编译成一个缩小的文件。在这个模块中,我需要使用DOM/BOM API,比如document,'window, 'navigator。在浏览器上,加载和使用编译的单个文件没有问题。

但是在WeChat迷你程序中,没有global对象和Node一样.浏览器上也没有documentwindow全局对象。为了解决这个问题,我为每个环境创建了两个构建命令。

  • grunt build,标准TS编译browser
  • grunt wx_build,标准TS编译和附加WeChat小程序

补丁代码

修补的js文件如下所示:

代码语言:javascript
复制
// mymodule-bundle.min.js

// patch
window=require("./miniapp-adapter/src/index.js");
document=require("./miniapp-adapter/src/document.js").default;

// original compiled/minified code
(function(f){if(typeof exports==="object"&&typeof module!=="undefined")...

在WeChat小程序项目中,我把mymodule-bundle.min.jsminiapp-adapter放在同一个文件夹中。因此,我可以将我的HTML5应用程序移植到WeChat小程序。

但我想找个更聪明的方法。

如何在document mymodule.ts 中为WeChat迷你程序运行时声明mymodule.tsdocument全局变量?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-22 02:59:15

以下是您如何声明它们的方法:

代码语言:javascript
复制
declare const document: any
declare const window: any

要获得更好的intellisense类型,您只需使它们的类型代表您在那里放置的内容,如果您需要消费者使用它们。否则你就可以就这样离开他们了。

在Node中,您可以这样做:

代码语言:javascript
复制
declare namespace NodeJS {
  export interface Global {
    window: any
    document: any
  }
}

global.window = require("./miniapp-adapter/src/index.js");
global.document = require("./miniapp-adapter/src/document.js").default;

不过,要想在Node上具有惯用性,您应该从模块导出它们,而不是将它们加载到全局命名空间中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60348459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档