【问题标题】:Simple TypeScript helper function简单的 TypeScript 辅助函数
【发布时间】:2015-02-17 10:06:01
【问题描述】:

我正在尝试创建一个可以从任何 TypeScript 模块中访问的静态辅助函数,我确实找到了这篇文章 (Can I declare a static private function in typescript?),其答案似乎在我需要的正确轨道上,但出于某种原因TypeScript 1.4 编译器不断抛出这个错误:

错误 TS2339:“typeof App”类型上不存在属性“Dialog”。

这是我在utility.ts 文件中实现的代码:

module App.Dialog {
    export module Modal {
        export function testHelper(link: string) {
            return 'worked';
        }
    }
}

在我希望调用testHelper 的主文件中,我有:

module App.Services {
    export class OrderService implements Interfaces.IService {
    ...
    App.Dialog.Modal.testHelper('test')
}

这也是各种任意辅助函数的最佳实践吗?我希望创建的实际助手将被称为 getApiDate() 并将返回我需要发送到我的 API 的精确日期字符串格式,并且需要在任何模块中快速轻松地访问,理想情况下无需实例化整个类,只需就像在 C# 中创建静态类和方法一样。

【问题讨论】:

  • 您的文件根目录是否有export(或import)?
  • 上面的两个代码示例都包含两个文件中的第一行,顶部,导出模块,第二个导出类?

标签: typescript


【解决方案1】:

该代码工作正常,如图所示:

您可能缺少reference 标记。完整代码:

utility.ts

module App.Dialog {
    export module Modal {
        export function testHelper(link: string) {
            return 'worked';
        }
    }
}

testHelper.ts

/// <reference path="./utility.ts"/>

module App.Services {
    export class OrderService {
        constructor() {
            Dialog.Modal.testHelper('test');
        }
    }
}

PS:您可能已经知道的提示:内部和外部模块之间的区别:https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

【讨论】:

  • 啊!参考,我忘了包括它....天才!谢谢 Basarat :) 如果我没看过视频,我会看一下视频;所以最后我的问题是,我用来创建辅助函数的方法是最佳实践吗?你如何处理这些情况?我在适当的地方使用了角度滤镜。
  • 我使用的方法现在 遗憾的是没有很好的记录。我需要为它创建一个 oss 模板。我现在在空闲时间忙于atom.io/packages/atom-typescript
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多