Я пытаюсь создать третий интерфейс / тип, где значения второй опоры будут основываться только на первом значении опоры, а также этот третий интерфейс будет иметь третью опору. Причина, по которой я не расширяю третью опору из первых двух интерфейсов, заключается в том, что она мне на самом деле не нужна, если я использую ее для каких-то других вещей (и я не думаю, что делать ее необязательной - это правильно)
Итак вот что я сделал:
- Создайте два интерфейса A и B, которые имеют одинаковые свойства, но могут иметь разные значения
- Создайте тип, в котором это объединение двух интерфейсов
- Создайте новый тип, содержащий третье свойство, и смешайте его с объединением двух типов
Вот как я это делаю
const A_PROP1 = 'A_PROP1';
const A_PROP2_VALUES = {
type1: 'type1',
type2: 'type2',
type3: 'type3',
};
const B_PROP1 = 'B_PROP1';
const B_PROP2_VALUES = {
type4: 'type4',
type5: 'type5',
};
interface A {
prop1: typeof A_PROP1;
prop2: keyof typeof A_PROP2_VALUES;
}
interface B {
prop1: typeof B_PROP1;
prop2: keyof typeof B_PROP2_VALUES;
}
type AB = A | B;
type ABC = AB & {
prop3: 'prop3_value';
}
Однако, когда я делаю следующее
const test: ABC = {
prop3: 'prop3_value',
prop1: A_PROP1,
prop2: 'random entered value', //The suggestion for this one shows the combination of A_PROP2_VALUES and B_PROP2_VALUES
}
prop2 показывает предупреждение, где оно объединяет A_prop2_values
и B_prop2_values
, где мне нужен только A_prop2_values
. Как мне это сделать?
Изменить: я обновил вопрос, как было предложено. Я начинаю думать, что это проблема IDE, а не от Typescript вообще (я не проверял журнал Typescript). По умолчанию, я думаю, он объединяет значения, показывающие вам, какими могут быть значения, и если вы выберете что-то неправильное, он выдаст вам ошибку типа.
Это решено, мои искренние извинения