typecript Свойство 'options' не существует для типа типа Union

switch случаи эквивалентны ===. Если бы они не были, это сработало бы:

switch ( 1 ) {
    case '1':
        console.log('hi')
}

Преобразование elementVal в число не имело бы никакого значения. Ваша версия if/else также функционально одинакова (хотя инструкции break ничего не делают).

1
задан Mattijs 20 January 2019 в 04:10
поделиться

1 ответ

Вы создали интерфейс, у которого нет свойства «options». Затем вы устанавливаете свой тип «Поле» равным этому интерфейсу (или потенциально равному другому интерфейсу, у которого есть свойство «options»).

Затем вы пытаетесь вызвать свойство «options», которое может существовать или не существовать. Вот почему вы получаете ошибку ts при компиляции.

Переключение типа возврата на «any» работает, потому что компилятор не будет пытаться угадать тип возвращаемого вами объекта (поэтому вполне вероятно, что «options» будет допустимым свойством и, следовательно, не должно вызывать ошибки).

Если вы собираетесь вызывать свойство «options» для типа «Field», вы должны убедиться, что оно существует, прежде чем пытаться скомпилировать скрипт ts.

Возможно, лучше изменить ваши методы на «getSelectField» и «getNumberField» .... но, конечно, есть несколько способов, которыми вы можете справиться с этим.

0
ответ дан user2263572 20 January 2019 в 04:10
поделиться
Другие вопросы по тегам:

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