我有以下目录结构:
/Admin/Grid
abc.ts // this file contains the one function abc()
xxx.ts // this file contains the one function xxx()
/Admin/Dialog
abc.ts // this file contains the one function abc()
我将所有三个javascripts加载到我的浏览器中。
函数xxx()如下所示:
function xxx() {
// do abc
abc();
}
有没有办法使用typescript我可以告诉函数xxx执行/ Admin / Dialog目录中文件内的函数abc?
答案 0 :(得分:1)
如果您正在引用所有这些文件,并且您的功能都在全局范围内(看起来它们来自您的问题),那么您可以从任何地方调用这些函数。
您可能想要研究的TypeScript的一个好处是使用模块和类来封装函数和数据组,这有助于您组织程序并使全局范围远离您自己的函数和变量。
回到你的问题,如果你想要两个同名的函数,你不能将它们放在同一个范围内 - 你需要:
以下是基于您的问题的示例。
class OtherClass {
abc () {
}
}
class MyClass {
xxx () {
var oc = new OtherClass();
oc.abc();
}
}
var mc = new MyClass();
mc.xxx();
答案 1 :(得分:0)
我会用JavaScript回答你:
基本上你无法告诉xxx()执行/Admin/Dialog/abc.ts中的abc()。这是因为当加载/Admin/Dialog/abc.ts时它会覆盖/Admin/Grid/abc.ts的abc()。
你可以做的是这样的事情:
/Admin/Grid/abc.ts
var grid = {
abc: function() {
....
}
}
/Admin/Dialog/abc.ts
var dialog= {
abc: function() {
....
}
}
然后在xxx()中:
function xxx() {
grid.abc();
}
这样对话框的abc()不会覆盖网格的abc()。
编辑:在TypeScript中:
/Admin/Grid/abc.ts
class Grid {
abc() {
}
}
/Admin/Dialog/abc.ts
class Dialog {
abc() {
}
}
然后在xxx.ts:
class Samantha {
xxx () {
var grid = new Grid ();
grid.abc();
}
}
var me = new Samantha ();
me .xxx();
希望这有帮助!