Ошибка утверждения типа между объектом и значением примитива - PullRequest
0 голосов
/ 23 марта 2019

Я создал этот интерфейс.

interface Option {
  value: string|number;
  label: string|number;
}

Я планирую создать переменную с именем options, которая допускает массив «Option» или одно значение, например строку.

У меня нет проблем с присвоением значений переменной.

const options: Array<Option|string> = [{value: 'a', label: 'A'}];

Но когда я пытаюсь использовать переменную, я получаю следующую ошибку:

const singleOption = options[0].value;

Свойство 'value' не существует для типа 'string |Опция».Свойство 'value' не существует для типа 'string'

Я попытался проверить, является ли значение объектом или строкой.

const singleOption = typeof options[0] !== 'string' ? options[0].value : options[0];

, а также с типомно я все еще получаю ту же ошибку.

 const singleOption = (<Option>options[0]).value ? options[0].value : options[0];

Я провел небольшое исследование, но не нашел решения или обходного пути для этого сценария.

1 Ответ

3 голосов
/ 23 марта 2019

Поток управления, к сожалению, не работает с таким доступом к массиву.Это будет работать, если вы сначала назначите параметр переменной:

const option = options[0]
const singleOption = typeof option !== 'string' ? option.value : option;
...