【问题标题】:Typescript Revealing Module PatternTypescript 显示模块模式
【发布时间】:2016-10-14 00:11:49
【问题描述】:

我在 Angular 应用程序中使用带有 JS 的显示模块模式。

现在我要将它从 Javascript 迁移到 Typescript,但我不知道如何在 TS 中使用这种模式。我已经阅读了类似以下的其他帖子,但没有一个在函数开头有返回。 TypeScript code similar to Revealing Module Pattern structure

angular.module('app.services')
.factory('justAService', justAService);

function justAService() {

return {
  a: a
};

var x = {};

function a(){....}

是否可以在顶部写return?

谢谢

【问题讨论】:

  • 不要使用那种模式; TypeScript 有实际的模块。 developer.mozilla.org/en/docs/web/javascript/reference/…
  • 在返回后加上var x = {}; 也没有任何意义。它永远不会到达。相当于声明var x;而不初始化它。
  • 是的,你是对的。为什么要使用模块而不是这种模式?

标签: typescript


【解决方案1】:

是的,这是可能的。它通常用于提高可读性,并且完全不影响程序的执行。因为函数评估(定义)发生在 javascript 执行之前,所以当你的模块返回对函数的引用时,它已经被定义了。但它只适用于以这种方式声明的函数,否则将是无法访问的代码。

例子:

module App{
    angular.module('app.services')
        .factory('justAService', justAService);

    function justAService() {

        return {
            a: a
        };

        function a() {

            var x = {};
        }
    }
}

【讨论】:

  • 你能给我看个样品吗?我试过了,但功能总是无法访问
  • 你到底尝试了什么?给定的示例似乎是在这种情况下。
  • 我编辑了我的样本。代码很像示例
  • 正如我在回答中所说,它仅适用于函数声明,使用 var x = {} 将导致无法访问代码。我已经用一个例子更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 2020-01-23
  • 2016-05-15
  • 1970-01-01
  • 2016-11-01
  • 2014-07-02
  • 1970-01-01
相关资源
最近更新 更多