打字稿在内部模块中使用定义文件

时间:2015-12-01 22:34:08

标签: typescript

我正在尝试创建一组静态"帮助"我希望在我的应用程序中的多个脚本中重用的函数。但是,我遇到了一个问题,因为帮助程序功能正常。参数需要从外部模块定义为类型。

我有一个外部定义文件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
        }
    }
}

请注意,function参数具有来自外部模块定义的类的类型参数。现在我想在我的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'.如果我在import中注释掉app.helpers.ts语句,则错误消失,但我在该文件中收到错误Cannot find namespace 'external'. ,这是显而易见的,因为我不能再引用外部模块定义(因此仍然无法编译)。

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

1 个答案:

答案 0 :(得分:0)

  

我创建了一组静态辅助函数,我希望在app.helpers.ts中的多个脚本中重复使用这些函数

优秀的做法是在您需要的地方显式导入这些帮助

module

与外部模块一样,不要使用{{1}}关键字,每个文件都已经是模块。有关模块的更多信息:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

相关问题