Сделайте все свойства в интерфейсе Typescript дополнительными

У меня есть интерфейс в моем приложении:

interface Asset {
  id: string;
  internal_id: string;
  usage: number;
}

это - часть интерфейса сообщения:

interface Post {
  asset: Asset;
}

У меня также есть интерфейс, который является для проекта сообщения, где объект актива мог бы только быть частично создан

interface PostDraft {
  asset: Asset;
}

Я хочу позволить a PostDraft объект иметь частичный актив возражает при тихой проверке типов на свойствах, которые являются там (таким образом, я не хочу просто выгружать его с any).

Я в основном хочу способ смочь генерировать следующее:

interface AssetDraft {
  id?: string;
  internal_id?: string;
  usage?: number;
}

полностью не переопределяя Asset интерфейс. Существует ли способ сделать это? В противном случае, что было бы умный способ расположить мои типы в этой ситуации быть?

59
задан 27 September 2016 в 01:25

1 ответ

В дополнение к ответ David Sherret всего несколько строк с моей стороны, как это может быть реализовано непосредственно без Partial<T> тип для лучшего понимания предмета.

interface IAsset {
  id: string;
  internal_id: string;
  usage: number;
}

interface IPost {
  asset: IAsset;
}

interface IPostDraft {
  asset: { [K in keyof IAsset]?: IAsset[K] };
}

const postDraft: IPostDraft = {
  asset: {
    usage: 123
  }
};
0
ответ дан 1 November 2019 в 11:53

Другие вопросы по тегам:

Похожие вопросы: