【问题标题】:Define global function in module在模块中定义全局函数
【发布时间】:2020-08-29 22:09:59
【问题描述】:

我可以在非模块文件中定义一个全局函数:

foo.ts:

function foo() {}

我可以在不导入 foo.ts 的情况下从文件 bar.ts 调用该函数:

bar.ts:

foo(); // call global function foo

但是,一旦我将另一个模块导入 foo.ts,foo.ts 就会变成一个模块,并且全局定义消失了。尝试调用 foo 时导致 bar.ts 出错。

如何在不导入的情况下在整个项目中全局的模块中定义全局函数。

编辑:

我知道declare global 语法,但在这种情况下,我需要编写每个函数签名两次:一次是全局声明它,一次是绑定到globalThis。我正在寻找样板更少的东西。

【问题讨论】:

  • this 帮忙吗?
  • 我看到了“声明全局”的技巧,但是你必须写两次签名。

标签: typescript


【解决方案1】:

在这种情况下,看起来确实需要declare global。我发现的唯一(详细)解决方案是:

declare global {
  function foo(): void;
}

globalThis.foo = () => {};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多