Ошибка машинописного текста при использовании response-daterange-picker «Нет перегрузки, соответствующей этому вызову».

Когда я пытаюсь использовать <tcode id="302384"></tcode> в моем приложении React Typescript я получаю сообщение об ошибке

      No overload matches this call.
  Overload 1 of 2, '(props: RangeProps<DateRangePicker> | SingleProps<DateRangePicker> | Readonly<RangeProps<DateRangePicker>> | Readonly<...>): DateRangePicker', gave the following error.
    Type 'Date[]' is not assignable to type 'Moment | (MomentRange & typeof import("/Users/nyxynyx/test/node_modules/moment/ts3.1-typings/moment.d.ts")) | DateRange | undefined'.
      Type 'Date[]' is missing the following properties from type 'Moment': format, startOf, endOf, add, and 80 more.
  Overload 2 of 2, '(props: Props<DateRangePicker>, context: any): DateRangePicker', gave the following error.
    Type 'Date[]' is not assignable to type 'Moment | (MomentRange & typeof import("/Users/nyxynyx/test/node_modules/moment/ts3.1-typings/moment.d.ts")) | DateRange | undefined'.
      Type 'Date[]' is not assignable to type 'Moment'.  TS2769

    20 |         <DateRangePicker 
    21 |             onChange={onChange}
  > 22 |             value={value}
       |             ^
    23 |         />
    24 |     )
    25 | }

Мой код основан на официальном примере в репозитории пакетов .

Почему здесь ошибка Typescript и как ее исправить?

Реагировать на код Typescript:

      import React, { useState } from 'react';
import DateRangePicker from 'react-daterange-picker';

export function Foo(): JSX.Element {

    const [ value, onChange ] = useState([new Date(), new Date()]);

    return (
        <DateRangePicker 
            onChange={onChange}
            value={value}
        />
    )
}

3 ответа

Решение

Одна строка, которую вы изменили из примера, была import.

      import DateRangePicker from 'react-daterange-picker';

Эта строка не импортирует модуль, на который вы указали в своем вопросе. Этот импорт <tcode id="302388"></tcode>, но вы связались с . Это два совершенно разных модуля.

Вместо этого установите @wojtekmaj/react-daterange-picker и это типы пакета @types/wojtekmaj__react-datetimerange-picker. Тогда все должно работать так, как вы ожидаете.

измените свою строку импорта

      import DateRangePicker from 'react-daterange-picker';

к

      import DateRangePicker from '@wojtekmaj/react-daterange-picker';

Если пакет не установлен, то:

      npm install @wojtekmaj/react-daterange-picker

Надеюсь, что это поможет вам. Спасибо.

Я добавил определение типа в @types. Вы можете установить его, выполнив npm install --save @types/wojtekmaj__react-daterange-picke

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