Тип TypeScript Union позволяет использовать атрибуты из обоих интерфейсов

interface NumericalityGreaterOptions {
  greaterThan?: number;
  greaterThanOrEqualTo?: number;
}

interface NumericalityEqualOptions {
  equalTo?: number;
}

const x: NumericalityEqualOptions | NumericalityGreaterOptions = {
  greaterThanOrEqualTo: 4,
  equalTo: 3
};

https://www.typescriptlang.org/play/#code/JYOwLgpgTgZghgYwgAgHIFcC21gLgG2DAE8BxKCOSKAeQAcxgB7EAZ2QG8BYAKGWQDmFKtAAqACzggA-AC5kILACNoAbl78hlahKk0oAUQCO6AqKZyFytbwC+vXqGrwkaLDjyESx0-nqMWdm4+ZAgTMwt5RUwVKHUeex5eBECwZAAPeQxsKFwCImIfAn9mNmQAHzccvK8yYWoSwOQAXk4NQXqxSRB9IvxzeQAWABp2sN8B5ABmO1UgA Я бы, однако, ожидать, машинопись, чтобы не позволить й иметь equalTo и greaterThanOrEqualTo как атрибуты, как они из разных интерфейсов, которые объединены с помощью типа объединения. Я ожидал такого поведения от:

NumericalityEqualOptions & NumericalityGreaterOptions

вместо.

Я что-то делаю не так или это ошибка?


person Maurice Döpke    schedule 30.07.2019    source источник
comment
Ссылка, которую вы предоставили, НЕ проходит проверку типа.   -  person zerkms    schedule 30.07.2019
comment
@zerkms Я случайно ввел большеThanOrEqualTo в качестве даты вместо числа. Теперь он не выдает ошибок, хотя должен.   -  person Maurice Döpke    schedule 30.07.2019
comment
@ MauriceDöpke Я думаю, что дубликат хорошо на это отвечает. Дайте мне знать, если вы думаете, что это не решит проблему.   -  person Titian Cernicova-Dragomir    schedule 30.07.2019