首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在函数中使用动态导入时,如何在全局变量中指定类型信息?

在函数中使用动态导入时,如何在全局变量中指定类型信息?
EN

Stack Overflow用户
提问于 2020-01-13 02:34:24
回答 1查看 64关注 0票数 0

我简化的服务器代码如下所示。

server.ts

代码语言:javascript
复制
import google from "googleapis";

const androidPublisher = google.androidpublisher("v3");

app.use('something', function(req, res, n){
   ...
})

...(only one of the dozens of other methods use androidPublisher)

为了设置androidpublisher变量,我正在导入googleapis库。但是,这个googleapis库很大,完全导入文件需要400ms~700ms,而导入其他库文件需要10ms~30ms。

因为我的环境是无服务器架构(firebase函数),并且大约每100个请求中就有一个实际需要androidPublisher,所以我希望在需要时利用动态导入来导入googleapis。否则,上面的设置实际上会增加400ms/700ms的延迟,即使在不需要androidPublisher的情况下,每个请求也会产生新的无服务器实例。

所以我做了如下修改。

server.ts

代码语言:javascript
复制
let androidPublisherInstance:any;

async function getAndroidPublisher() {
    const googleapis = await import("googleapis");

    if (androidPublisherInstance === undefined) {
        const ap = googleapis.google.androidpublisher("v3");
        androidPublisherInstance = ap;
    }
    return androidPublisherInstance;
}


...(one of methods use getAndroidPublisher() to get androidPublisher instance)

在上面的设置中,我使用全局变量和助手函数仅在需要时初始化androidPublisher。这可以正常工作,当第一次需要androidPublisher时,会增加400ms~700ms的延迟。但是,我最终将androidPublisherInstance类型设置为any。我无法正确定义类型,因为类型定义在googleapis中可用,而它驻留在getAndroidPublisher函数中。

因此,我失去了使用typescript的所有好处,当我使用androidPublisherInstance时,我不得不在使用方法/属性时玩猜谜游戏。

而且我认为必须使用全局变量,因为我不想在函数调用getAndroidPublisher()时多次初始化androidPublisher (googleapis.google.androidpublisher("v3")

我是不是遗漏了什么?有没有一种方法可以使用动态导入&让客户端只初始化一次,而不需要使用全局变量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-13 03:46:40

您可以只导入类型。只要您只在类型定义中使用它,而不是在值表达式中使用它,编译后的JavaScript就永远不会加载模块:

代码语言:javascript
复制
import { androidpublisher_v3 } from "googleapis";
let androidpublisher: androidpublisher_v3 | undefined;

或者,为了确保您不会意外地在错误的位置引用它,请仅使用import types

代码语言:javascript
复制
let androidpublisher: import("googleapis").androidpublisher_v3 | undefined;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59706951

复制
相关文章

相似问题

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