我正在玩TypeScript并导出/导入。
我只想拥有像C#
这样的文件结构。我想嵌套一个helper-class whic只包含一些常量字符串属性。这就是文件~/Scripts/Helper/UrlHelper.ts
的样子:
module Helper.UrlHelper {
abstract class Controller {
protected static readonly controllerName: string;
}
export abstract class Account extends Controller {
static controllerName: string = "Account";
static readonly loginGet: string = [Account.controllerName, "Login"].join("/");
static readonly loginPost: string = [Account.controllerName, "Login"].join("/");
}
}
我的目标是使用值,例如Helper.UrlHelper.Account.loginPost
。但我没有让导入/导出工作。
我的最后一次尝试是添加export * from "./Helper/UrlHelper"
并使用导入import {Account} from "../Helper/UrlHelper";
这会导致错误:
模块'“... / Scripts / Helper / UrlHelper”'没有导出的成员'帐户'
我几乎尝试了here的所有内容,但没有任何效果。我做错了什么?
答案 0 :(得分:1)
请勿使用关键字module
,只需导出您需要在其他位置导入的成员:
// Helper/UrlHelper.ts
abstract class Controller {
protected static readonly controllerName: string;
}
export abstract class Account extends Controller {
static controllerName: string = "Account";
static readonly loginGet: string = [Account.controllerName, "Login"].join("/");
static readonly loginPost: string = [Account.controllerName, "Login"].join("/");
}
然后,可以导入导出的成员Account
:
// other-directory/other-file.ts
import { Account } from "../Helper/UrlHelper"
modules 的文档在这里:
您也可以使用名称空间,但它不是ES6标准。如果您真的需要名称空间,请参阅以下文档:
另见:
答案 1 :(得分:0)
参考:https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html
建议你不要在模块中包装类,因为它可能会造成不必要的混乱
更好的选择是:
abstract class Controller { /* ... */ }
export abstract class Account extends Controller { /* ... */ }
这可以放在Helper
中,按照建议命名文件UrlHelper.ts。
然后,当您要导入该类时,您可以:
import { Account } from "./Helper/UrlHelper";