单独的使用typescript 并不会导致学习成本很高,但是绝大部分前端开发者的项目都是依赖于框架的
10年积累的成都网站设计、做网站、成都外贸网站建设公司经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站后付款的网站建设流程,更有景泰免费网站建设让你可以放心的选择与我们合作。
例如和vue、react 这些框架结合使用的时候,会有一定的门槛
使用 TypeScript 编写 react 代码,除了需要 typescript 这个库之外,还需要安装@types/react、@types/react-dom
- npm i @types/react -s
- npm i @types/react-dom -s
至于上述使用@types的库的原因在于,目前非常多的javascript库并没有提供自己关于 TypeScript 的声明文件
所以,ts并不知道这些库的类型以及对应导出的内容,这里@types实际就是社区中的DefinitelyTyped库,定义了目前市面上绝大多数的JavaScript库的声明
所以下载相关的javascript对应的@types声明时,就能够使用使用该库对应的类型定义
在编写react项目的时候,最常见的使用的组件就是:
无状态组件
主要作用是用于展示UI,如果使用js声明,则如下所示:
- import * as React from 'react'
- export const Logo = props => {
- const { logo, className, alt } = props
- return (
- )
- }
但这时候ts会出现报错提示,原因在于没有定义porps类型,这时候就可以使用interface接口去定义porps即可,如下:
- import * as React from 'react'
- interface IProps {
- logo?: string
- className?: string
- alt?: string
- }
- export const Logo = (props: IProps) => {
- const { logo, className, alt } = props
- return (
- )
- }
但是我们都知道props里面存在children属性,我们不可能每个porps接口里面定义多一个children,如下:
- interface IProps {
- logo?: string
- className?: string
- alt?: string
- children?: ReactNode
- }
更加规范的写法是使用React里面定义好的FC属性,里面已经定义好children类型,如下:
- export const Logo: React.FC
= props => { - const { logo, className, alt } = props
- return (
- )
- }
有状态组件
可以是一个类组件且存在props和state属性
如果使用typescript声明则如下所示:
- import * as React from 'react'
- interface IProps {
- color: string,
- size?: string,
- }
- interface IState {
- count: number,
- }
- class App extends React.Component
{ - public state = {
- count: 1,
- }
- public render () {
- return (
Hello world- )
- }
- }
上述通过泛型对props、state进行类型定义,然后在使用的时候就可以在编译器中获取更好的智能提示
关于Component泛型类的定义,可以参考下 React 的类型定义文件 node_modules/@types/react/index.d.ts,如下所示:
- class Component
{
- readonly props: Readonly<{ children?: ReactNode }> & Readonly
;
- state: Readonly
;
从上述可以看到,state属性也定义了可读类型,目的是为了防止直接调用this.state更新状态
受控组件
受控组件的特性在于元素的内容通过组件的状态state进行控制
由于组件内部的事件是合成事件,不等同于原生事件,
例如一个input组件修改内部的状态,常见的定义的时候如下所示:
- private updateValue(e: React.ChangeEvent
) { - this.setState({ itemText: e.target.value })
- }
常用Event 事件对象类型:
上述只是简单的在react项目使用typescript,但在编写react项目的时候,还存在hooks、默认参数、以及store等等......
typescript在框架中使用的学习成本相对会更高,需要不断编写才能熟练
文章题目:面试官:说说如何在React项目中应用TypeScript
文章网址:http://www.gawzjz.com/qtweb/news17/179467.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联