打字稿类商店

时间:2014-08-09 00:56:05

标签: typescript javascript-namespaces

也许我没有使用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();

我收到以下错误:未捕获的TypeError:无法读取属性' DependencyClass'未定义的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

有可能这样做吗?我错过了名称空间的东西吗?

是。从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();