如何从javascript调用静态Typescript类函数?

时间:2018-03-01 09:34:36

标签: javascript typescript

我有一个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类。

1 个答案:

答案 0 :(得分:1)

回答你的问题:

test.ts

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

中的

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

你的打字稿编译器在编译时可能会使用闭包,所以一切都在匿名函数的范围内关闭:

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

因此,要从html访问您的函数,您应该将其分配给窗口。

但是如果你做的很简单,那么你真的不需要TypeScript,而是使用vanilla JavaScript。如果需要,您可以使用ES6类。

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