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();