основа: как дастать все из namespace доп:(сушествует ли алтернатива namespace?)

Рейтинг: 2Ответов: 2Опубликовано: 26.03.2023
export namespace NNameSpace {
  export type TA = number;
  export type TB = string;
  export type TE = boolean;
}
// type TNameSpaceTypes = ...NNameSpace; //результат TA | TB | TE (как то из NNameSpace достать все)

type TA = number;
type TB = string;
type TE = boolean;

// type TGroup = (TA, TB, TE); //создать некоторую груприровку (может есть алтернатива namespace?)
// type TABE2 = ...TGroup; //результат TA | TB | TE
// const d: TGroup.TA = 1;
// или
// const d: TGroup[TA] = 1;

Ответы

▲ 1Принят

К сожалению, такой возможности для неймспейсов не существует. Самое простое, что можно сделать, это определить ваши типы в объекте:

type MyTypes = {
  A: string
  B: number
  C: boolean
}

declare const a: MyTypes["A"] // string
declare const b: MyTypes[keyof MyTypes] // string | number | boolean

▲ 1

Тьфу, невнимательно вопрос прочитал...


Пространства имён для того и нужны, чтобы ограничивать область видимости того, что в них лежит. Обращаться к типам надо через точку.

export namespace NNameSpace {
  export type TA = number;
  export type TB = string;
  export type TE = boolean;
}

let x: NNameSpace.TA
let y: NNameSpace.TB
let z: NNameSpace.TE

Ну или можно самому создать на них алиасы:

type TA = NNameSpace.TA
type TB = NNameSpace.TB
type TE = NNameSpace.TE

Способа импортировать неймспейс так, чтобы в текущем файле его типы оказались сами без префикса я не знаю.