Конвертировать JSX в TSX?

3

У меня есть библиотека компонентов React с определенными proptypes, и я рассматриваю возможность перехода на Typcript. Есть ли какой-нибудь инструмент, помогающий переносить код? Вот пример набора реквизитов для простого компонента:

  static propTypes = {
    active: PropTypes.bool,
    children: PropTypes.node,
    disabled: PropTypes.bool,
    icon: Icon.propTypes.kind,
    tabIndex: PropTypes.number
  };

Я представляю инструмент, который бы преобразовал это в нечто вроде:

interface IButtonProps {
    active: boolean,
    children: node,
    disabled: boolean,
    icon: Icon,
    tabIndex: number
}

Не слишком сложно писать, но было бы неплохо, если бы оно уже существовало.

  • 1
    Как насчет простой замены регулярных выражений в выбранной вами IDE?
  • 0
    Помог ли мой ответ?
Теги:
transformation
porting

2 ответа

0

Вы можете использовать пакет response-javascript-to-typescript-transform для автоматического преобразования/переноса React JSX в TypScript TSX.

Код можно преобразовать через CLI, например

react-js-to-ts reactFile.js

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

class MyComponent extends React.Component {
static propTypes = {
    prop1: React.PropTypes.string.isRequired,
    prop2: React.PropTypes.number,
};
constructor() {
    super();
    this.state = { foo: 1, bar: 'str' };
}
render() {
    return (
        <div>
            {this.state.foo}, {this.state.bar}, {this.state.baz}
        </div>
    );
}
onClick() {
    this.setState({ baz: 3 });
}
}

Будет преобразован в следующий файл машинописного текста:

type MyComponentProps = {
prop1: string;
prop2?: number;
};

type MyComponentState = {
foo: number;
bar: string;
baz: number;
};

class MyComponent extends React.Component<MyComponentProps, MyComponentState> {
constructor() {
    super();
    this.state = { foo: 1, bar: 'str' };
}
render() {
    return (
        <div>
            {this.state.foo}, {this.state.bar}, {this.state.baz}
        </div>
    );
}
onClick() {
    this.setState({ baz: 3 });
}
}
0

Есть ли какой-либо инструмент, который поможет порту кода

Неа. Либо создайте один (и ссылку назад), либо просто выполните ручную работу или просто используйте any чтобы быстро начать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню