Dev Highlights

Доки по разработке

This project is maintained by teniryte

OneOf и взаимоисключающие свойства

Принципы

Пример

import { OneOf } from 'ts-cookbook';

interface UnsavedRecord {
  name: string;
  age: number;
}

type DbRecord = UnsavedRecord &
  OneOf<{
    draftId: string;
    dbId: string;
  }>;

const record: DbRecord = {} as any;
if (record.dbId) {
  record.draftId; // тип: draftId?: undefined
}

Практика