如何在TypeScript

时间:2016-09-29 14:17:07

标签: typescript typescript1.8

考虑这个模块:

export module Example{
    let customer : any;

    export function myExample(customer: string) {
        // How to reference the module level customer object here?
        // Is there a standard to make these module level variables Pascal Case to prevent this overlap?
    }
}

customer函数中的myExample是一个字符串。如何引用模块级customer

如果是课程,我可以使用this.customerthis在模块中不起作用,Example.customer也不起作用,除非客户是出口...

2 个答案:

答案 0 :(得分:2)

通常,模块会导出类,函数或枚举等其他元素。

此示例中显示的export module Example仅指定Example实际上是命名空间,这意味着对myExample函数的任何引用都必须由命名空间名称预先修复,即{{1 }}

如果您说除非导出客户,否则您是正确的。这是因为Example.myExample()仅指定命名空间,而不是导出的变量或类。

很难推测您使用export module Example而不是export module的原因:

export class

由于使用了export class Example2 { customer: string = 'Example2.customer'; myExample(customer: string) { console.log(`Example ${this.customer}`); console.log(`Example ${customer}`); } } 关键字,此类实际上是一个模块。

答案 1 :(得分:0)

以下是问题TS的JS生成版本:

define(["require", "exports"], function (require, exports) {
    "use strict";
    var Example;
    (function (Example) {
        var customer;
        function myExample(customer) {
            // How to reference the module level customer object here?
            // Is there a standard to make these module level variables Pascal Case to prevent this overlap?
        }
        Example.myExample = myExample;
    })(Example = exports.Example || (exports.Example = {}));
});

由于客户未被导出,因此会将其生成为私有。现在,标准的Javascript变量范围规则生效,并且无法引用模块级客户。最简单和最简单的解决方案(和IMHO模块级私有变量的标准约定)是强调最外层的客户:

export module Example{
    let _customer : any;

    export function myExample(customer: string) {
        _customer = customer;
    }
}