【问题标题】:Typescript Class Store打字稿类商店
【发布时间】:2014-10-02 13:34:59
【问题描述】:

也许我没有正确使用 Typescript 的命名空间,但这是我要解决的问题。

当创建一个类时,我需要使用如下的 require 来引用我的所有其他文件。

import DependencyModule = require("Path.../DependencyModule");
import DependencyClass = DependencyModule.DependencyClass;

如果我希望能够像这样构造类,每次我需要添加这两行:

var class = new DependencyClass();

因为我的项目打算很大,并且我已经需要几个类,所以我将拥有一个名为 ClassStore.ts 的文件,该文件将引用所有类,因此我只需要引用该文件一次.

import ModulesStore = require("ClassStore");
var class = new ModulesStore.DependencyClass();

可以这样做吗?我错过了命名空间的东西吗?

请注意,我尝试从包含多个导出的文件中导出导入类和接口。一个用于接口,一个用于实现。

这是我的项目(DependencyClass.ts)的典型文件架构:

export interface IDependencyClass { ... }
export class DependencyClass { ... }

这是我在“ClassStore”中尝试过的:

// ClassStore.ts
export import DependencyModule = require("DependencyClass");

// Other file needing the DependencyClass
import ClassStore = require("ClassStore");
var class = new ClassStore.DependencyModule.DependencyClass();

我收到以下错误:Uncaught TypeError: Cannot read property 'DependencyClass' of undefined。

感谢您的帮助。

【问题讨论】:

    标签: typescript javascript-namespaces


    【解决方案1】:

    可以这样做吗?我错过了命名空间的东西吗?

    是的。从DependencyModule,导出带有=的类

    class Foo{}
    export = Foo;
    

    使用index.ts(或任何你想称呼它的名字)import/exports 所有类,例如

    export import DependencyModule = require("Path.../DependencyModule");
    export import DependencyModule2 = require("Path.../DependencyModule2");
    

    那么你可以这样做:

    import Index = require("Path.../Index");
    var foo = new Index.Foo();
    

    【讨论】:

    • 您好,非常感谢您的回答。我忘了提到我通常从单个文件中导出 1 个接口和 1 个类(用于代码导航)。这意味着我不能直接从文件中接收单个类。请看一下这个问题,我已经更新了更多细节。
    猜你喜欢
    • 2020-05-05
    • 2021-06-14
    • 2018-04-16
    • 2021-09-27
    • 2012-12-26
    • 1970-01-01
    • 2017-08-26
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多