Typescript Class Store

Возможно, я неправильно использую пространства имен с Typescript, но вот проблема, которую я пытаюсь решить.

При создании класса мне нужно сослаться на все мои другие файлы, используя требование, как указано ниже.

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

Каждый раз, когда мне нужно добавить эти 2 строки, я хочу создать класс следующим образом:

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: Невозможно прочитать свойство 'DependencyClass' из неопределенного.

Спасибо за помощь.

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();
Другие вопросы по тегам