Слишком комплексные вложенные классы
Описание
Недавно открыл для себя способ создания вложенных классов в TypeScript:
type OuterInner = InstanceType<typeof Outer.Inner>;
//#region Outer
class Outer {
//#region Inner
static Inner = class OuterInner {
innerPublicMethod(): void {
Outer.#outerPrivateMethod();
}
};
//#endregion
static #outerPrivateMethod(): void { }
}
//#endregion
const inner: OuterInner = new Outer.Inner();
inner.innerPublicMethod();
export type { OuterInner };
export { Outer };
И совсем уж недавно (вчера) открыл его побочный эффект: так как определение вложенных классов происходит неявно...
... (способ явного определения лично я не нашел) то при сложной структуре вложенного класса получаем ошибку
The inferred type of this node exceeds the maximum length the compiler will serialize. An explicit type annotation is needed.
Вопрос
- Если я делаю класс не вложенным, я теряю доступ к приватным членам класса.
- Если я делаю класс вложенным, я получаю ошибку, с которым не знаю как поступить.
Что мне делать?
Источник: Stack Overflow на русском