TypeError: свойство не существует для типа

Я использую сценарий типа для проекта реагирования. Я определил тип для всех значений, но prop.option? Я не могу получить значение имени. Пожалуйста, скажите мне ответ.

type PropTypes = {
  option?: OptionType[]
}

type OptionType = {
  id?: number
  name?: string
  price: number
  quantity: number
}

function OrderItemPCForm(props: PropTypes) {

  console.info('===>', props.option?.name)
return(<div>...</div>)}
Property 'name' does not exist on type 'OptionType[]'.

Option представляет собой массив OptionType. Вам нужно будет извлечь из него элемент, а затем получить доступ к свойству name, например: props.option.map((individualOption) => console.info(individualOption.name))

Elihu Del Valle 21.03.2022 06:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
1
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша проблема заключалась в том, что вы определили option как массив (а не объект)

option?: OptionType[]

так что, когда вы пытаетесь получить доступ к значениям из

console.info('===>', props.option?.name)

Это выдаст ошибку, потому что вы пытаетесь получить name из option объекта, который не определен.

Есть 2 способа исправить

Во-первых, вы должны удалить определение массива на option

type PropTypes = {
  option?: OptionType //removed `[]`
}

Второе исправление может быть

console.info('===>', props.option[index].name) //index can be populated from a loop

Но это также зависит от вашего намерения, какой тип вы хотите получить (массив или объект на option)

@김유경, Ник прав. Вам просто нужно сделать option prop type просто объектом, а не массивом OptionType. И все будет работать нормально

Evgeny Melnikov 21.03.2022 08:12

Другие вопросы по теме