Typescript 有哪些实用的内置类型?
背景
TypeScript 是现代前端工程开发的必备知识,其中内置了很多默认类型;本篇将介绍了Typescript中的一系列的内置类型,并通过具体的代码示例为大家解释了如何使用这些类型。
本文会分别介绍**Required
、Partial
、Pick
、Record
、Omit
、Exclude
、Extract
、NonNullable
、ReturnType
以及字符串相关的类型 Uppercase
、Lowercase
、Capitalize
和 Uncapitalize
**等。每个类型都配有详细的示例代码来帮助读者更深入地理解类型和其用法,而不仅仅是理论知识。
希望通过阅读本文,能够帮助大家对Typescript的内置类型有更为全面的理解。
类型手册
Required
将所有类型转为必选类型
javascripttype User = { name?: string password?: string id?: number } type RequireUser = Required<User> 相当于 { name: string password: string id: number }
Partial
将所有类型转为可选类型
javascripttype PartialUser = { name: string password: string id: number } Partial<User2> 相当于 type User
Pick<T, K>
从 T 中筛选出 K (大类型中挑选小类型)
javascripttype PickUser = Pick<RequireUser, 'name' | 'id'> // {name: string, id: number} const user: PickUser = {name: "John", id: 1}
Record<K, T>
返回一个对象类型,参数
Keys
用作键名,参数Type
用作键值类型。
javascriptinterface CatInfo { age: number; breed: string; } type CatName = "miffy" | "boris" | "mordred"; const cats: Record<CatName, CatInfo> = { miffy: { age: 10, breed: "Persian" }, boris: { age: 5, breed: "Maine Coon" }, mordred: { age: 16, breed: "British Shorthair" }, };
Omit<Type, Keys>
用来从对象类型
Type
中,删除指定的属性Keys
,组成一个新的对象类型返回。
javascriptinterface Todo { title: string; description: string; completed: boolean; createdAt: number; } type TodoPreview = Omit<Todo, "description">; const todo: TodoPreview = { title: "Clean room", completed: false, createdAt: 1615544252770, };
Exclude<UnionType, ExcludedMembers>
用来从联合类型
UnionType
里面,删除某些类型ExcludedMembers
,组成一个新的类型返回。
javascripttype T0 = Exclude<"a" | "b" | "c", "a">; // "b" | "c"
Extract<Type, Union>
用来从联合类型
UnionType
之中,提取指定类型Union
,组成一个新类型返回。
javascripttype T0 = Extract<"a" | "b" | "c", "a" | "f">; // "a"
NonNullable
用来从联合类型
Type
删除null
类型和undefined
类型,组成一个新类型返回,也就是返回Type
的非空类型版本
javascripttype T0 = NonNullable<string | number | undefined>; // string | number
ReturnType
提取函数类型
Type
的返回值类型,作为一个新类型返回。
javascriptdeclare function f1(): { a: number; b: string }; type T4 = ReturnType<typeof f1>; type T4 = { a: number; b: string; }
字符串操作类型
Uppercase
将字符串的每个字符转为大写。
javascripttype A = 'hello'; type B = Uppercase<A>; // "HELLO"
Lowercase
将字符串的每个字符转为小写。
javascripttype A = 'HELLO'; type B = Uppercase<A>; // "hello"
Capitalize
将字符串的第一个字符转为大写。
javascripttype A = 'hello'; type B = Capitalize<A>;// "Hello"
Uncapitalize
将字符串的第一个字符转为小写。
javascripttype A = 'HELLO'; type B = Capitalize<A>;// "hELLO"