【问题标题】:Typescript Using Definition File in Internal Module打字稿在内部模块中使用定义文件
【发布时间】:2015-12-02 06:47:01
【问题描述】:

我正在尝试创建一组静态“帮助程序”函数,我想在我的应用程序的多个脚本中重复使用这些函数。但是,我在编译时遇到了问题,因为辅助函数的参数需要定义为来自外部模块的类型。

我有一个外部定义文件,external.d.ts:

declare module "external" {
    export class ExternalClass { }
}

我在app.helpers.ts 中创建了一组我想在我的应用程序的多个脚本中重复使用的静态帮助函数:

/// <reference path="external.d.ts" />

import * as external from "external";

module App {
    export module Helpers {
        export function helperFunction(thing: external.ExternalClass) {
            //do stuff
        }
    }
}

请注意,函数参数具有来自外部模块定义的类的类型参数。现在我想在我的app.ts 中使用这个辅助函数:

/// <reference path="external.d.ts" />
/// <reference path="app.helpers.ts" />

import * as external from "external";

var thing: external.ExternalClass;
//instantiate thing
App.Helpers.helperFunction(thing);

但是,这不会编译。在最后一行,我收到错误Cannot find name 'App'. 如果我注释掉app.helpers.ts 中的import 语句,错误就会消失,但随后我在该文件Cannot find namespace 'external'. 中收到错误,这很明显,因为我可以' t 不再引用外部模块定义(因此仍然无法编译)。

我想要一组可以通过内部模块引用的辅助函数,但这些函数具有外部模块中类型的类型参数。我的问题是:有没有办法让它工作?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    我在 app.helpers.ts 中创建了一组静态帮助函数,我想在我的应用程序的多个脚本中重复使用它们

    在需要的地方显式导入这些帮助程序是一种很好的做法

    import * as helpers from "../path/to/app.helpers.ts";
    

    也不要使用module 关键字,因为每个文件已经是一个模块。更多关于模块:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-12
      • 2014-05-22
      • 1970-01-01
      • 2016-11-06
      • 2016-09-05
      • 2016-04-26
      • 2016-02-15
      • 1970-01-01
      相关资源
      最近更新 更多