0

我有以下目录结构:

/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()

我将所有三个 javascript 都加载到我的浏览器中。

函数 xxx() 如下所示:

function xxx() {
   // do abc
   abc();
}

有没有一种使用打字稿的方法,我可以告诉函数 xxx 执行 /Admin/Dialog 目录中文件内的函数 abc?

4

2 回答 2

1

如果您引用所有这些文件并且您的函数都在全局范围内(看起来它们来自您的问题),那么您可以从任何地方调用这些函数。

您可能想要研究的 TypeScript 的一个好处是使用模块和类来封装函数和数据组,这有助于您组织程序并保持全局范围不受您自己的函数和变量的影响。

所以回到你的问题,如果你想要两个同名的函数,你不能把它们都放在同一个范围内——你需要:

  • 重命名一个
  • 将它们包含在类/模块中
  • 仅包含包含 abc 函数的文件之一

这是基于您的问题的示例。

class OtherClass {
    abc () {

    }
}

class MyClass {
    xxx () {
        var oc = new OtherClass();
        oc.abc();
    }
}

var mc = new MyClass();

mc.xxx();
于 2012-11-13T13:38:24.070 回答
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();

希望这可以帮助!

于 2012-11-13T13:40:08.507 回答