IntelliSense не работает с моей собственной библиотекой компонентов React

IntelliSense не отображает реквизиты, которые принимают компоненты в моей библиотеке React. Библиотека входит в модуль UMD с Webpack (если это имеет значение).

Вот как это выглядит в моей среде IDE, когда я пытаюсь увидеть, какие свойства принимает компонент:

IntelliSense не работает с моей собственной библиотекой компонентов React

По сравнению с другими элементами / компонентами ...

IntelliSense не работает с моей собственной библиотекой компонентов React

Как заставить IntelliSense работать с моими компонентами?

Nitpick: Судя по вашим скриншотам, это вопрос о IDE семейства IntelliJ; IntelliSense - это функция Visual Studio (и VS Code).

MTCoster 17.11.2018 15:50

Я считаю, что IntelliJ использует propTypes для сбора этой информации, вы устанавливаете это для Player?

MTCoster 17.11.2018 15:51

@MTCoster Привет, да. Я установил propTypes для компонента Player. Похоже, что IntelliSense не работает после объединения библиотеки и импорта ее в новый проект.

j.doe 17.11.2018 16:02

Вам может потребоваться создать файл определения TypeScript (index.d.ts), чтобы сообщить IntelliJ о вашей библиотеке.

MTCoster 17.11.2018 16:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
4
746
1

Ответы 1

Поздно на вечеринку, но, надеюсь, это кому-то поможет.

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

Я использовал @ babel / plugin-offer-class-properties и писал такие классы:

import React, { PureComponent } from 'react'
import PropTypes from 'prop-types'

export default class Alert extends PureComponent {
    static propTypes = {
        type: PropTypes.oneOf(['success', 'info', 'warning', 'danger']),
        title: PropTypes.string,
    }

    render() {
        const { type, children } = this.props


        return (
            <div>
                <h3>{title}</h3>
                {children &&
                <div className = "alert-content">
                    {children}
                </div>
                }
            </div>
        )
    }
}

В моем скомпилированном файле для определения propTypes использовался defineProperty следующим образом:

_defineProperty(Alert, "propTypes", {
  type: PropTypes.oneOf(['success', 'info', 'warning', 'danger']),
  title: PropTypes.string
});

Установив опцию loose: true в плагине babel, мне удалось превратить его в это, и intellisense работал в IntelliJ:

Alert.propTypes = {
  type: PropTypes.oneOf(['success', 'info', 'warning', 'danger']),
  title: PropTypes.string
};

Мой .babelrc

{
  "plugins": [
    ["@babel/plugin-proposal-class-properties", { "loose": true }]
  ]
}

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