Не могу получить функцию от PropTypes - PullRequest
0 голосов
/ 09 октября 2018

Я не могу понять, почему этот импорт или любой другой не работает:

    import * as React from 'react';
    import TextField from '@material-ui/core/TextField';
    import * as PropTypes from 'prop-types';
    import { withStyles } from '@material-ui/core/styles';
    //import { PropTypes } from '@material-ui/core';

    interface IProps {
        value: string;
        onChange?: PropTypes.func;
    }

    const textField = (props: IProps) => {
        return (
            <div>HI</div>
        );
    };

    export default textField;

Я получаю сообщение об ошибке:

ts-app / node_modules / @ types / prop-types/ index "'не имеет экспортированного члена' func '

Я просматриваю этот файл и, похоже, у него явно есть такой участник:

export const func: Requireable<(...args: any[]) => any>;

возможно, однажды я пойму React икак работают эти зависимости, спасибо!

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

PropTypes.func - это значение (предназначенное для использования в свойстве propTypes компонента функции без сохранения состояния или статического свойства класса компонента), но вы пытаетесь использовать его как тип.Вместо этого вы можете вручную написать базовый тип:

onChange?: (...args: any[]) => any;

или, возможно, более конкретный тип, подходящий для вашего приложения.

I подал проблему за слабую ошибкусообщение.

0 голосов
/ 09 октября 2018

Попробуйте это

import PropTypes from 'prop-types';

Причина в следующем:

import * as PropTypes from 'prop-types';

запрашивает объект со всеми именованными экспортами prop-types.

*.1009 * Однако, это не тот способ, которым создается prop-types пакет.Мы должны использовать синтаксис:
import PropTypes from 'prop-types';

, который запрашивает экспорт по умолчанию prop-types.Пакет prop-types фактически использует синтаксис default export.

Для получения дополнительной информации: Разница между импортом X и импортом * как X в файле node.js (ES6 / Babel)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...