重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章给大家分享的是有关TypeScript中实用类型有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
成都创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为裕民企业提供专业的成都做网站、网站制作,裕民网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
TypeScript 原生提供了几个有用的实用类型来帮助我们进行一些常见的类型转换。这些实用类型是全局可用的,它们都使用了泛型。
下面这7个是我经常用到的。
1. Pick
Pick
会从 Type 中挑选属性集 Keys 来创建一个新的类型,Keys 可以是一个字符串字面或字符串字面的联合。Keys 的值必须是 Type 的键,否则TypeScript编译器会抱怨。当你想通过从有很多属性的对象中挑选某些属性来创建更轻的对象时,这个实用类型特别有用。
type User = { name: string age: number address: string occupation: string } type BasicUser = Pick// type BasicUser = { // name: string; // age: number; // }
2. Omit
Omit
与Pick
相反。 Keys
不是说要保留哪些属性,而是指要省略的属性键集。 当我们只想从对象中删除某些属性并保留其他属性时,这个会更有用。
type User = { name: string age: number address: string occupation: string } type BasicUser = Omit// type BasicUser = { // name: string; // age: number; // }
3. Partial
Partial
构造了一个类型,其所有的类型属性都设置为可选。当我们在编写一个对象的更新逻辑时,这个可能非常有用。
type User = { name: string age: number address: string occupation: string } type PartialUser = Partial// type PartialUser = { // name?: string; // age?: number; // address?: string; // occupation?: string; // }
4. Required
Required
与Partial
相反。它构造了一个类型的所有属性都是必填的类型。它可以被用来确保在一个类型中没有可选属性出现。
type PartialUser = { name: string age: number address?: string occupation?: string } type User = Required// type User = { // name: string; // age: number; // address: string; // occupation: string; // }
5. Readonly
Readonly
构建了一个类型,其类型的所有属性被设置为只读。重新分配新的值 TS 就会报错。
type User = { name: string age: number address: string occupation: string } type ReadOnlyUser = Readonlyconst user: ReadOnlyUser = { name: "小智", age: 24, address: "厦门", occupation: "大迁世界" } user.name = "王大冶" // Cannot assign to 'name' because it is a read-only property.
6. ReturnType
ReturnType
从一个函数类型的返回类型构建一个类型。当我们处理来自外部库的函数类型并希望基于它们建立自定义类型时,它是非常有用的。
import axios from 'axios' type Response = ReturnTypefunction callAPI(): Response{ return axios("url") }
感谢各位的阅读!关于“TypeScript中实用类型有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!