比同事更秀? TS 这七个方法,你需要知道的!

TypeScript 中的比同类型系统是非常强大的。它为我们提供了类型安全。事更类型系统虽然受人喜爱,秀T需知但如果我们不规划和设计类型和接口,比同它也会让我们的事更代码变得混乱难读。
泛型
避免代码重复中,秀T需知创建可重用的比同类型,是事更我们编写简洁代码重要的一环。泛型是秀T需知 TypeScript 的一个功能,它允许我们编写可重用的比同类型。看下面的事更例子:
type Add<T> = (a: T, b: T) => T const addNumbers: Add<number> = (a, b) => { return a + b } const addStrings: Add<string> = (a, b) => { return a + b }将正确的类型放入Add的泛型中,它可以被用来描述两个数字的秀T需知相加或两个字符串的连接。我们不需要为每个函数写一个类型,比同而只需要用泛型做一次。事更这不仅节省了我们的秀T需知精力,而且还使我们的代码更加简洁,更不容易出错。云南idc服务商
实用类型
TypeScript 原生提供了几个有用的实用类型来帮助我们进行一些常见的类型转换。这些实用类型是全局可用的,它们都使用了泛型。
下面这7个是我经常用到的。
1. Pick<Type, Keys>
Pick会从 Type 中挑选属性集 Keys 来创建一个新的类型,Keys 可以是一个字符串字面或字符串字面的联合。Keys 的值必须是 Type 的键,否则TypeScript编译器会抱怨。当你想通过从有很多属性的对象中挑选某些属性来创建更轻的对象时,这个实用类型特别有用。
type User = { name: string age: number address: string occupation: string } type BasicUser = Pick<User, "name" | "age"> // type BasicUser = { // name: string; // age: number; // }2. Omit<Type, Keys>
Omit与Pick相反。Keys 不是说要保留哪些属性,而是指要省略的属性键集。当我们只想从对象中删除某些属性并保留其他属性时,这个会更有用。
type User = { name: string age: number address: string occupation: string } type BasicUser = Omit<User, "address" | "occupation"> // type BasicUser = { // name: string; // age: number; // }3. Partial<Type>
Partial 构造了一个类型,亿华云其所有的类型属性都设置为可选。当我们在编写一个对象的更新逻辑时,这个可能非常有用。
type User = { name: string age: number address: string occupation: string } type PartialUser = Partial<User> // type PartialUser = { // name?: string; // age?: number; // address?: string; // occupation?: string; // }4. Required<Type>
Required与Partial相反。它构造了一个类型的所有属性都是必填的类型。它可以被用来确保在一个类型中没有可选属性出现。
type PartialUser = { name: string age: number address?: string occupation?: string } type User = Required<PartialUser> // type User = { // name: string; // age: number; // address: string; // occupation: string; // }5. Readonly<Type>
Readonly 构建了一个类型,其类型的所有属性被设置为只读。重新分配新的值 TS 就会报错。
type User = { name: string age: number address: string occupation: string } type ReadOnlyUser = Readonly<User> const user: ReadOnlyUser = { name: "小智", age: 24, address: "厦门", occupation: "大迁世界" } user.name = "王大冶" // Cannot assign to name because it is a read-only property.7. ReturnType<Type>
ReturnType 从一个函数类型的返回类型构建一个类型。当我们处理来自外部库的函数类型并希望基于它们建立自定义类型时,它是非常有用的。
import axios from axios type Response = ReturnType<typeof axios> function callAPI(): Response{ return axios("url") }除了上面提到的,还有其他实用类型可以帮助我们编写更干净代码。关于实用工具类型的TypeScript文档链接可以在这里找到。
https://www.typescriptlang.org/docs/handbook/utility-types.html
实用类型是TypeScript提供的非常有用的功能。开发人员应该利用它们来避免硬编码类型。源码库要比同事更秀? 这些就是你需要知道的!
~完,我是刷碗智,准备去去那个了,我们下期见!
作者:juno ng 译者:前端小智
来源:medium 原文:https://medium.com/ng/7-utility-types-that-every-typescript-developer-should-know-788fe73421f1

【编辑推荐】
为什么说,MQ,是互联网架构的解耦神器? Prometheus告警规则管理 最高法、人社部:“996”严重违法!取消“996”,你们公司提上日程了吗? Python正面硬刚C语言,结果会怎样? CNNIC:我国已成为6G专利申请的主要来源国相关文章
- 摘要:在现代社会中,电脑已经成为我们生活和工作中不可或缺的一部分。然而,对于很多人来说,使用电脑时遇到的问题和繁琐的操作常常让人感到困扰。为了帮助大家更好地应对这些问题,本文将为大家详细...2025-11-05
本文转载自微信公众号「JS每日一题」,作者灰灰。转载本文请联系JS每日一题公众号。一、是什么单例模式(Singleton Pattern):创建型模式,提供了一种创建对象的最佳方式,这种模式涉及到一个2025-11-05
在我们日常统计过程中,像这种要统计连续N天都出现的问题比较普遍。比如统计连续三天销售额大于10万的是哪几天,连续一周客流量大于100的是哪几天等等。今天我们用一个示例,来告诉大家该如何求解类似的问题。2025-11-05
SQL是一种编程语言,用于管理以表格形式(即表)存储在关系数据库中的数据。关系数据库由多个相互关联的表组成。表之间的关系是在共享列的意义上形成的。有许多不同的关系数据库管理系统(例如MySQL,Pos2025-11-05- 摘要:智能手机已成为现代人生活中不可或缺的一部分,各大厂商纷纷推出新款产品以迎合市场需求。而三星N9008V作为一款引领潮流的智能手机,凭借其超高性能和出色的用户体验,成为用户心目中的不...2025-11-05
对于小白来说,想玩好域名投资,首先要能准确评估域名价值。那么,怎么给域名估价?小白做域名估价时要考虑哪些因素?在这里,小聚整理了2021域名精准估价的五个技巧,快来看看吧!小白速看:2021域名精准估2025-11-05

最新评论