惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Cloudflare Blog
L
LangChain Blog
WordPress大学
WordPress大学
V
V2EX
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Stack Overflow Blog
Stack Overflow Blog
J
Java Code Geeks
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Docker
Recent Announcements
Recent Announcements
GbyAI
GbyAI
博客园 - 叶小钗
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog

BAIYUN'S BLOG

AI Coding 从小工到专家 - BAI YUN 电信 IPTV 内网融合教程:在局域网任意设备观看 IPTV - BAI YUN 美国住宅 IP 提供商体验对比 - BAI YUN Node.js 程序以 Keyless 模式从 1Password 读取密钥 - BAI YUN 高效优雅的观影指南 - BAI YUN 基于 Surge 的 DNS 优化指南 - BAI YUN RIME 鼠须管输入法简明使用教程 - BAI YUN 自动给不同 Git 项目设置不同的用户名邮箱 - BAI YUN Web3 新手如何选择加密货币钱包 - BAI YUN Web3 到底是什么? - BAI YUN 谨慎开启 Safari 的阻止跨站跟踪功能 - BAI YUN iOS Surge 开启后无法使用部分国产 APP 或网络出错的解决办法 - BAI YUN 屏蔽 Telegram 垃圾私信的有效办法 - BAI YUN 每个人都应该读一遍《1984》和《动物庄园》 - BAI YUN iOS 给常见机构号码增加联系人头像 - BAI YUN 在国内如何购买比特币和投资加密货币 - BAI YUN WEB 性能优化:如何让你的网站页面秒开(方法论) - BAI YUN 加密货币投资这件事 - BAI YUN 国内手机号注册推特教程 - BAI YUN 国内注册币安账号并通过 KYC 教程 - BAI YUN 使用一套助记词创建多个以太坊钱包账户 - BAI YUN Apple Watch 的几个用途 - BAI YUN 钱包安全指南:如何保护你的 NFT 和加密资产不被盗 - BAI YUN 我在 macOS 上高频使用的应用 - BAI YUN Web3 时代:如何使用 MetaMask 钱包实现一键登录 - BAI YUN 2022 年了 Safari 无法渲染渐变文字的 BUG 依旧存在 - BAI YUN 境外手机卡:澳门电信大湾区预付卡使用体验 - BAI YUN 解决 iCloud Drive 上传文件卡住的问题 - BAI YUN Electron 应用如何获取系统代理配置 - BAI YUN 解决 iOS 上 Google 账号登录会卡在加载状态的问题 - BAI YUN
使用 TypeScript 提升可维护性 - BAI YUN
baiyun · 2021-09-15 · via BAIYUN'S BLOG

合理使用 TS 的枚举类型

最近发现不少新手或有一定 TS 使用经验的的开发同学并没有充分发挥 TS 枚举值的能力,代码中很容易见到 if(status === 1){} else if (status === 2){} 这种魔法数字,项目只要稍微复杂一些,这种魔法数字维护起来就是一场灾难。

ProTable@2x.jpg

类似上图中的枚举状态在开发中很常见,我们可以使用 TS 的枚举类型来提高维护性,减少 bug

bad:

if (status === 1) {
   //
} else if (status === 2) {
  //
}

good:

export enum TaskStatus {
  // 处理中
  processing = 0,
  // 成功
  success = 1,
  // 异常
  error = 2,
}

if (status === TaskStatus.processing) {
   // 处理中
} else if (status === TaskStatus.success) {
  // 成功
} else if (status === TaskStatus.error) {
  // 异常
} else {
  // 无效的枚举值
}

当然你也可以使用 switch 语句代替上面的写法。

在类型定义文件引入枚举值

有时候你可能需要在一些全局的 .d.ts 类型声明文件中引用其他模块中定义的枚举值,这种情况可以通过 import() 语句来引入其他枚举值而不破坏 .d.ts 文件的作用范围,例如

Bad:

// xxx.d.ts
import { AppType } from '@/componets/AppCard'
declare interface AppState {
  name: string
  type: AppType
}

Good:

// xxx.d.ts
declare interface AppState {
  name: string
  type: import('@/componets/AppCard').AppType
}

尽量避免使用 any

ts-man.png

本文原载于:baiyun.me

原文链接:https://baiyun.me/improve-maintainability-with-typescript

如果你喜欢我的内容,请考虑请我喝杯咖啡☕吧,非常感谢🥰 。

If you like my contents, please support me via BuyMeCoffee, Thanks a lot.