Typescript会帮我决定调用哪个函数吗?

时间:2012-11-13 13:31:09

标签: javascript typescript

我有以下目录结构:

/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?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

以下是基于您的问题的示例。

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

希望这有帮助!