TypeScript: управление необязательным флагом ключа в зависимости от использования - PullRequest
0 голосов
/ 06 ноября 2019

У меня определен интерфейс с 6 свойствами. Я хочу, чтобы одно из этих свойств было обязательным в одном рабочем процессе и необязательным для другого рабочего процесса. Я пытался определить тип в соответствии со следующим фрагментом кода. Это похоже на распространение всех свойств объекта и изменение нескольких параметров после операции распространения.

type Entity<T, Keys extends keyof T> = {
  [P in keyof T]?: T[P];
  [S in Keys]: T[S];
}; 

Однако это не делает работу. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 06 ноября 2019

Я думаю, есть несколько решений для этого. Один из них:

type Optional<T, OptionalKeys extends keyof T> =
    { [P in OptionalKeys]?: T[P] } & Omit<T, OptionalKeys>; 

Здесь мы определяем OptionalKeys и исключаем их из необходимой части.

Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...