首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将jsx转换为tsx?

将jsx转换为tsx?
EN

Stack Overflow用户
提问于 2016-05-29 11:34:43
回答 2查看 17.3K关注 0票数 9

我有一个定义了proptypes的React组件库,正在考虑切换到Typescript。有什么工具可以帮助移植代码吗?下面是一个简单组件的示例道具集:

代码语言:javascript
复制
  static propTypes = {
    active: PropTypes.bool,
    children: PropTypes.node,
    disabled: PropTypes.bool,
    icon: Icon.propTypes.kind,
    tabIndex: PropTypes.number
  };

我正在想象一种工具,可以将其转换为以下内容:

代码语言:javascript
复制
interface IButtonProps {
    active: boolean,
    children: node,
    disabled: boolean,
    icon: Icon,
    tabIndex: number
}

写起来并不难,但如果它已经存在就更好了。

EN

回答 2

Stack Overflow用户

发布于 2018-02-03 09:54:34

您可以使用react-javascript-to-typescript-transform包自动将React JSX转换为Typescript TSX。

代码可以通过CLI进行转换,例如

代码语言:javascript
复制
react-js-to-ts reactFile.js

以下示例取自项目网站。标准的react组件,例如

代码语言:javascript
复制
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 });
}
}

将转换为以下typescript文件:

代码语言:javascript
复制
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 });
}
}
票数 8
EN

Stack Overflow用户

发布于 2016-05-30 08:10:28

是否有任何工具可以帮助移植代码

不是的。或者创建一个(并链接回来),或者只做手动操作,或者只使用any快速入门

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37505904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档