возможно ли в typescript основоваясь на дженерике вернуть тот или иной вариант интерфейса

Рейтинг: 1Ответов: 1Опубликовано: 26.03.2023

возможно ли реализовать что то такое?

export type TD<U = null> = U ? {
  x: number;
} : {
  x?: number;
}

в данном случее мне конкретно интересует опциональная (?) зависишая от дженерика (передан или нет)

PC: когда кидал вопрос забыл про Required каторый в принципе решает вопрос, но если есть возможность реализовать вот что то такое, буду рад узнать.

для этого нужно Было.

export namespace NCash {
  export interface IInitialState {
    cash: number;
  }
  export type TAdd = Required<IAction<ECashActions.ADD_CASH, IInitialState['cash']>>;
  export type TGet = Required<IAction<ECashActions.GET_CASH, IInitialState['cash']>>;
  export type TActions = TAdd | TGet;
}

export interface IAction<T, U = never> extends Action<T> {
  payload?: U;
}

Ответы

▲ 2Принят

Можно так:

type TD<U = null> = U extends null ? {
  x?: number;
} : {
  x: number;
};

let a: TD; // { x?: number | undefined }
let b: TD<1>; // { x: number }

Но не очень ясно зачем это нужно.