【问题标题】:How do I call a static Typescript class function from javascript?如何从 javascript 调用静态 Typescript 类函数?
【发布时间】:2023-04-07 12:44:02
【问题描述】:

我有一个类似这样的 ts 脚本 (test.ts):

class Foo {
    public static bar() {
        console.log("test");
    }
}

我想用这样的普通 js 调用它(test.html):

<script src="test.js"></script>
<script>
    Foo.bar();
</script>

test.htmltest.js放在同一目录下,由webpack编译集成。

这可能吗?如果是这样,我该怎么做?

更新

好的,所以我像这样更改了程序:

class Foo {
    public bar() {
        console.log("test");
    }
}

但是,javascript 仍然找不到 Foo 类。

【问题讨论】:

  • 试试看怎么样?您也可以使用TypeScript Playground 查看静态函数和非静态函数的区别。
  • “但还是没有机会” 什么意思?你展示了你所拥有的,发生了什么?错误?

标签: javascript typescript


【解决方案1】:

回答你的问题:

在您的 test.ts 中:

class Foo {
    public static bar() {
        console.log("test");
    }
}
window.Foo = Foo;

在您的测试 html 中:

<script src="test.js"></script>
<script>
    Foo.bar();
</script>

您的 typescript 编译器可能在编译时使用了闭包,因此所有内容都在匿名函数的范围内关闭:

(function(){
    ...
})()

所以要从 html 访问你的函数,你应该将它分配给 window。


但如果你做的是简单的事情,你真的不需要 TypeScript,继续使用 vanilla JavaScript。如果需要,您可以使用 ES6 类。

TypeScript 用于更复杂的解决方案。在 TypeScript 中,您应该在文件之间使用导出和导入,而不是分配给窗口...

【讨论】:

  • 谢谢!我也会研究出口。示例很简单,但我需要我的代码在 ES5 环境中工作 + 内部会稍微复杂一些,所以我想我会使用 Typescript。再次感谢!
猜你喜欢
  • 2016-07-02
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 2022-07-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
相关资源
最近更新 更多