Я объявляю библиотеку JAVA в отдельном файле, чтобы построить различные классы и пространства имен, используемые в ней, поэтому, когда я ссылаюсь на это из других файлов, использующих библиотеку JAVA, будут связанные комментарии и наборы. (Кстати, для плагина NativeScript, поэтому я смешиваю JAVA и JS).
javalib.ts
export declare namespace org {
export namespace fizz {
export namespace buzz {
export namespace libA {
export class libAClassA { }
export class libAClassB { }
}
export namespace libB {
export class libBClassA { }
export class libBClassB { }
}
}
}
}
Это выглядит дико, и я мог бы, вероятно, сократить его до export declare namespace org.fizz.buzz { ... }
, но сейчас я обгоняю его.
В другом файле, который будет использовать некоторые из этих классов (т.е. libAClassA или libBClassB) Я бы, конечно, хотел импортировать эти пространства имен, чтобы набрать тип и ссылки.Я до сих пор смог заставить его работать так:
app.ts
import * as pkg from './javalib';
let aliceClass = new pkg.org.fizz.buzz.libA.libAClassA();
let bobClass = new pkg.org.fizz.buzz.libA.libBClassB();
Хотя это работает, это не идеально, так как нужно выписыватьполнота пространства имен для ссылки на это определение может стать довольно утомительной для дополнительного преимущества наглядности кода при разработке.Вместо этого я мог бы просто сделать одеяло declare var org: any
и покончить с ним, но в попытке улучшить моего будущего разработчика в этом проекте, а также других, я хотел бы использовать это и настроить это.
Есть ли способ преобразовать эту ссылку на пространство имен в локальную переменную, подобно тому, как в JAVA вы можете просто сделать import org.fizz.buzz;
и внезапно получить ссылки и доступ ко всему в этом пространстве имен?
ideal-app.ts
let libA = org.fizz.buzz.libA;
let libB = org.fizz.buzz.libB;
let aliceClass = new libA.libAClassA();
let bobClass = new libB.libBClassB();