我正在尝试创建一组静态"帮助"我希望在我的应用程序中的多个脚本中重用的函数。但是,我遇到了一个问题,因为帮助程序功能正常。参数需要从外部模块定义为类型。
我有一个外部定义文件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'.
,这是显而易见的,因为我不能再引用外部模块定义(因此仍然无法编译)。
我希望有一组辅助函数可以通过内部模块引用,但这些函数在外部模块中具有类型的类型参数。我的问题是:有没有办法让这项工作成效?
答案 0 :(得分:0)
我创建了一组静态辅助函数,我希望在app.helpers.ts中的多个脚本中重复使用这些函数
优秀的做法是在您需要的地方显式导入这些帮助。
module
与外部模块一样,不要使用{{1}}关键字,每个文件都已经是模块。有关模块的更多信息:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html