如何在TypeScript中引用自己的匿名模块?

时间:2014-02-17 14:42:29

标签: typescript

我的代码中有外部模块情况。根据建议(参见“Needless namespacing”)我试图避免不必要的命名空间并从任何地方删除模块声明。现在,当模块中函数的参数与模块中另一个函数的名称相同时,我遇到了命名冲突。所以我希望我能以某种方式告诉编译器它不是参数,它是我需要调用的当前模块的另一个函数。考虑:

function a() {
}
function b(a: {}) {
  return a(); /// <--- a problem, I wish there was something like: module.a(); or global::a();
}

有没有办法以某种方式克服这个问题而不改变名称?

2 个答案:

答案 0 :(得分:0)

function a() {
}
function b(a: {}) {
  return this.a(); ///try using this
}

我宁愿建议这样做:

module Testing {
    class MyFuncs {
        public a = () => { }
        public b = (a: {}) => { return this.a()}

    }
}

答案 1 :(得分:0)

对于模块,如果导出a功能,则可以通过模块名称访问它。对于全局项,您需要扩展表示全局根的接口,以便为编译器提供附加项的知识。我已经在下面展示了两个例子。

// Module
module Example {
    export function a() {
        alert('A1');
    }

    export function b(a: {}) {
      Example.a(); /// <--- I wish there was something like: module.a();
    }
}

Example.b({});

// Global
interface Window {
    a: () => any;
}

function a() {
    alert('A2');
}

function b(a: {}) {
  return window.a(); /// <--- I wish there was something like: global::a();
}

b({});

如果这些都不适合您,也许可以更改您的设计以将方法包装在类中,因为使用this关键字访问类成员,这将它们与局部变量和参数区分开来。 / p>