Redux Connect с Typescript — TS2347

Я новичок в Typescript, и хотя это увлекательно и спасает жизнь, эта ошибка довольно крепкий орешек.

Ошибка TypeScript: нетипизированные вызовы функций могут не принимать аргументы типа. ТС2347

Не могли бы вы сказать мне, что нужно улучшить в классе ниже, чтобы избавиться от этой ошибки?

вот и весь класс

import React, { FunctionComponent } from 'react'
import { ListGroup } from 'react-bootstrap'
import { connect } from 'react-redux'



type StateProps = {
  mbzArtists: IMBZArtist[],
  releaseArtistID: string
}

type DispatchProps = {
  findMBZReleases: (artistID: string) => void,
}

type OwnProps = {}

type MBZSearchResultsProps = StateProps & DispatchProps & OwnProps

const MBZSearchResults: FunctionComponent<MBZSearchResultsProps> = ({ findMBZReleases, mbzArtists, releaseArtistID }) => {
  return (
    <div className = "MBZSearchResults">
      // div content
    </div>
  )
}

const mapStateToProps = (state: AppState) => {
  return {
    mbzArtists: state.musicBrainz.mbzArtists,
    releaseArtistID: state.musicBrainz.artistReleaseID
  }
}

const mapDispatchToProps = (dispatch: any): DispatchProps => {
  return {
    findMBZReleases: (artistID: string) => dispatch(Actions.MBZActions.findMBZReleases(artistID))
  }
}

export default connect<StateProps, DispatchProps, OwnProps>(mapStateToProps, mapDispatchToProps)(MBZSearchResults)

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Спасибо.

Кажется, проблема устранена путем изменения оператора экспорта, как показано ниже: const component: React.FunctionComponent<OwnProps> = connect(mapStateToProps, mapDispatchToProps)(MBZSearchResults) export default component Могу ли я получить комментарий от пользователей машинописного текста, чтобы сообщить мне, если это путь?

Avinash Lingaloo 13.03.2019 16:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
1
355
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Как указано в сообщении об ошибке.

TypeScript error: Untyped function calls may not accept type arguments. TS2347

Функция подключения не принимает аргументы типа.

Измените подключение экспорта к этому:

export default connect(mapStateToProps, mapDispatchToProps)(MBZSearchResults)

Если мы сделаем это так, то для этого компонента не будет проверки свойств, и при его вызове можно будет указать любое количество свойств. Я уже пробовал это, и типы и способ написания этого компонента были исследованы, прежде чем перейти к SO. Вы пробовали это на своей стороне?

Avinash Lingaloo 13.03.2019 14:47
Ответ принят как подходящий

Кажется, проблема устранена путем изменения оператора экспорта, как показано ниже:

const component: React.FunctionComponent<OwnProps> = 
  connect(mapStateToProps, mapDispatchToProps)(MBZSearchResults)

export default component

Могу ли я получить комментарий от пользователей машинописного текста, чтобы сообщить мне, если это путь?

Я понимаю это как способ разделения общедоступных и внутренних реквизитов, которые будут использоваться вашим компонентом. Общедоступные реквизиты — это те реквизиты, которые будут изменены/переданы другими компонентами/вмешательством пользователя. Внутренние/приватные реквизиты — это такие реквизиты, которые каким-то образом унаследованы; например, реквизит «навигация», если вы используете реагирующую навигацию. Следовательно, вы не хотите, чтобы ваши пользователи могли возиться с этими внутренними реквизитами.

Avinash Lingaloo 27.05.2020 05:22

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