adamko-dev/kotlinx-serialization-typescript-generator

Move type declaration of sealed interfaces inside namespace

Opened this issue · 0 comments

Type declaration of interface should be moved inside namespace, although it then requires user to type Namespace.Interface, it avoids errors when importing both the namespace and the type.

export type TagResult =
  | TagResult.BuildErrorTagResult
  | TagResult.SuccessRightTreeTagResult
  | TagResult.TestErrorTagResult
  | TagResult.WrongFileTreeSuccessTagResult;

export namespace TagResult {
  export enum Type {
    BuildErrorTagResult = "moulinette.tag.BuildErrorTagResult",
    TestErrorTagResult = "moulinette.tag.TestErrorTagResult",
    SuccessRightTreeTagResult = "moulinette.tag.SuccessRightTreeTagResult",
    WrongFileTreeSuccessTagResult = "moulinette.tag.WrongFileTreeSuccessTagResult",
  }
}

becomes

export namespace TagResult {
    export type TagResult =
  | TagResult.BuildErrorTagResult
  | TagResult.SuccessRightTreeTagResult
  | TagResult.TestErrorTagResult
  | TagResult.WrongFileTreeSuccessTagResult;

  export enum Type {
    BuildErrorTagResult = "moulinette.tag.BuildErrorTagResult",
    TestErrorTagResult = "moulinette.tag.TestErrorTagResult",
    SuccessRightTreeTagResult = "moulinette.tag.SuccessRightTreeTagResult",
    WrongFileTreeSuccessTagResult = "moulinette.tag.WrongFileTreeSuccessTagResult",
  }
}

So that you could here use TagResult (as TagResult.TagResult) and TagResult.Type without any problems, ambiguity or IDE miscomprehension.