高可维护性TS编码技巧

本文介绍了提高TypeScript代码可维护性的八种编码技巧,包括显式定义类型、合理使用enum和type、利用keyof、原生类型辅助工具、is帮助类型推断、泛型、Infer辅助类型推断以及函数重载。特别讨论了在eventBus场景中的应用和优化,如如何处理不传参的情况。
摘要由CSDN通过智能技术生成

高可维护性TS编码技巧

1.显示的定义要使用的类型 减少借助类型推断的类型

import {
    useState } from 'react'

interface IUser {
   
  name: string;
}

function Component(user: IUser) {
   
  // 即使可以类型推到任然显示的去定义类型
  const [userInfo, setUserInfo] = useState<IUser>(user)
}

2. 合理使用enum和type

/ 通常来说,enum和type的使用场景还是比较接近的

// 在字段值是无语义的时候建议用enum
enum PersonType {
   
    plocieman = 0,
    firman = 1
}

// 如果字段值本身就是有语义的东西的时候建议用type
type KeyName = 'address' | 'name' | 'age'

// 通过const减少enum编译的内容, 在想把打包后代码体积压缩到极致的时候会有一定帮助
const enum PersonType2 {
   
    plocieman = 0,
    firman = 1
}

在这里插入图片描述
在这里插入图片描述
3. 利用keyof快速生成关键字

interface A {
   
  age: number;
  name: string;
}

type AKeys = keyof A; // age | name

4. 使用ts提供的原生类型辅助工具

// Partial 将类型所有属性转化为可选的
interface A {
   
    age: number;
    name: string;
}

/**
** {age?:number;name?:string}
**/
type PartialA = Partial<A>
// Required 将类型所有属性转化为必选的
interface A {
   
    age?: number;
    name?: string;
}

/**
** {age:number;name:string}
**/
type RequiredA = Required<A>

// Readonly 将类型所有属性转化为只读的
interface A {
   
    age: number;
    name: string;
}

/**
** {readonly age:number;readonly name: string}
**/
type ReadOnlyA = ReadOnly<A>
// Pick 提取出想要的属性组成一个新的类型
interface A {
   
    age: number;
    name: string;
    address: string;
}

/**
** {age:number;address: string}
**/
type PickA = Pick<A, 'age'|'address'>
// Omit 剔除掉不想要的属性组成一个新的类型
interface A {
   
    age: number;
    name: string;
    address: string;</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值