typescript开发react native 进阶

974 阅读1分钟

项目中使用

TypeScript帮助我们检测类型, 方便使用/阅读其它的模块,JS里一般使用PropTypes来定义类型, 但它不是很精确。

TS中对props, state都可以进行限制 - 这适用于类组件与函数组件.(使用到interface,也可以用type,参考:www.typescriptlang.org/docs/handbo…)

1. class组件:

image-20210726154656583

2. function组件:

1.第一种

image-20210726155058621

2.第二种

image-20210726155258767

3. 默认属性值:

这个就要区分了. 类组件与函数组件写法还不一样.(推荐使用函数组件,类组件的defaultProps不是很好理解)

函数组件

1.第一种

image-20210726162158819

2.第二种

image-20210726162341301

类组件

image-20210715115106482

3.传参为回调:

(函数定义参考:www.typescriptlang.org/docs/handbo…

image-20210715115248601

4.补充:

1.添加参数描述:

image-20210715115314154

image-20210714103921117

参数描述可以在使用的时候看得到

2.给现有的js添加类型声明:

给引入的路径,定义为模块;(使用declare module,参考:www.typescriptlang.org/docs/handbo…)

在模块声明里面对导出的方法或参数定义类型,声明文件统一放入@type文件里管理(待完善补充~)

如果模块是默认导出,用export default,导出多个使用export

例子:(原有的Screen组件)

image-20210714141450711

使用的时候需要引入路径import Screen from '@/common/components/Screen',在js中同样适用,但是js中不会有错误提示;

使用:(backgroundType参数为例:指定值)

image-20210714111724531

5.使用:

image-20210714102150363

1.如果参数传错或者必填参数没传,会有响应的提示

react 自带的Hook搭配TS使用

1.useState:

(其他hook同理)

const [sliderRef, setSliderRef] = useState<number>(0);

// 在useState后面<>中加入类型,不加的话会自动推导默认值的类型

2.特殊说明:

在使用forwardRef的时候(父组件控制子组件)会多一个ref参数:(使用react的React.ForwardRefRenderFunction

image-20210715115430645

使用:

image-20210714113447147

\