怎么在react里写ts

这篇文章将简单的演示怎么在react中加上ts,从一个简单的icon组件说起。普通react环境下是这样的。
icon.tsx

import React from 'react';
const Icon = ({ name, ...restProps}) => {
    return (
        <svg {...restProps}>
            <use xlinkHref={`#${name}`}/>
        </svg>
    );
};
export default Icon;

index.tsx

import * as React from 'react';
import ReactDom from 'react-dom';
import Icon from './icon/icon';

const fn =  (e) => {
  console.log((e))
};

ReactDom.render(
  <Icon name='wechat'/>, 
  document.getElementById('root')
);

然后对传入的name进行类型确定
icon.tsx

import React from 'react';

interface IconProps{
   name: string;
}

 const Icon: React.FunctionComponent<IconProps>  // React.FunctionComponent为对icon组件的类型测试,后面是传入的值的类型
=({ name, ...restProps})=> {
    return (
        <svg {...restProps}>
            <use xlinkHref={`#${name}`}/>
        </svg>
    );
};

export default Icon;

当然在传值的过程不只传个静态数据,还可能会传个事件,事件的类型判断和静态数据的不一样, 事件的类型判断如下

interface IconProps extends React.SVGAttributes<SVGElement> {
    name: string;
    onClick: React.MouseEventHandler<SVGElement>
}

当然,传入的事件也需要进行一下类型判断

const fn: React.MouseEventHandler<SVGAElement | SVGUseElement> = (e) => {
  console.log((e.target as HTMLDivElement))
};

一个简单的ts+react例子就写好了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容