在 TypeScript 中,函数类型和工具类型是非常重要的一部分。它们帮助开发者更好地定义和理解函数的参数和返回值类型。本文将介绍 TypeScript 中函数类型的几种方式和使用工具类型的方法。
函数类型
在 TypeScript 中,使用 =>
来定义函数类型,即 参数类型 => 返回值类型
。例如:
type AddFn = (a: number, b: number) => number; const add: AddFn = (a, b) => a + b;
这里我们定义了一个 AddFn
类型,它接受两个 number
类型的参数并返回一个 number
类型。我们定义了一个 add
函数,并把它声明为 AddFn
类型,它符合我们定义的函数类型。
另外,当函数的返回值类型为 void
时,可以省略 =>
后面的返回值类型。例如:
type HelloFn = (name: string) => void; const hello: HelloFn = name => console.log(`Hello, ${name}!`);
这里我们定义了一个 HelloFn
类型,它接受一个 string
类型的参数,并没有指定返回值类型。我们定义了一个 hello
函数,并把它声明为 HelloFn
类型,因为它的返回值类型为 void
。
可选参数和默认参数
在函数类型中,我们可以使用可选参数和默认参数。例如:
-- -------------------- ---- ------- ---- -------- - -------- - ------ ------- ------ ------ -- -- ----- ----- ------- -------- - ------ -- - ------------------- ------------------ ------------------ ----------------- -- -------- ------ ------ ----- -- --- -- ------ ---- ----- -- -------- ------ ------ --- -- ------ ----- ----- ---------
这里我们定义了一个 ConfigFn
类型,它接受一个带有 color
和可选的 size
属性的对象,并没有指定返回值类型。我们定义了一个 config
函数,并把它声明为 ConfigFn
类型,因为它的返回值类型为 void
。
默认参数的语法和 JavaScript 一样,例如:
type GreetingFn = (name?: string) => void; const greeting: GreetingFn = (name = 'world') => console.log(`Hello, ${name}!`); greeting(); // Hello, world! greeting('TypeScript'); // Hello, TypeScript!
这里我们定义了一个 GreetingFn
类型,它接受一个可选的 name
参数,并没有指定返回值类型。我们定义了一个 greeting
函数,并把它声明为 GreetingFn
类型,因为它的返回值类型为 void
。
工具类型
TypeScript 提供了一些强大的工具类型,可以帮助开发者更好地操作类型。下面介绍几个常用的工具类型。
Partial
Partial
可以把一个类型中所有属性变为可选。例如:
-- -------------------- ---- ------- --------- ---- - ----- ------- ---- ------- -------- ------- - ---- ----------- - -------------- ----- ----- ----------- - - ----- ----- --
PartialUser
类型把 User
接口中所有属性变为可选,我们定义了一个 user
变量,并把它声明为 PartialUser
类型,因为它只包含了 name
属性。
Required
Required
可以把一个类型中所有属性变为必选。例如:
type RequiredUser = Required<PartialUser>; const requiredUser: RequiredUser = { name: 'Tom', age: 20, address: 'Beijing' };
RequiredUser
类型把 PartialUser
中所有属性变为必选,我们定义了一个 requiredUser
变量,并把它声明为 RequiredUser
类型,因为它包含了所有 name
、age
和 address
属性。
Pick
Pick
可以从一个类型中提取指定的属性。例如:
type NameUser = Pick<User, 'name'>; const nameUser: NameUser = { name: 'Tom' };
NameUser
类型只包含了 User
接口中的 name
属性,我们定义了一个 nameUser
变量,并把它声明为 NameUser
类型,因为它只包含了 name
属性。
Omit
Omit
可以从一个类型中删除指定的属性。例如:
type AgeAddressUser = Omit<User, 'name'>; const ageAddressUser: AgeAddressUser = { age: 20, address: 'Beijing' };
AgeAddressUser
类型删除了 User
接口中的 name
属性,我们定义了一个 ageAddressUser
变量,并把它声明为 AgeAddressUser
类型,因为它只包含了 age
和 address
属性。
总结
本文介绍了 TypeScript 中函数类型的几种方式和使用工具类型的方法。我们可以使用 =>
来定义函数类型,可以使用可选参数和默认参数。TypeScript 还提供了一些强大的工具类型,例如 Partial
、Required
、Pick
、Omit
等。开发者可以根据自己的需求来使用这些工具类型,帮助更好地操作类型。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651b3d9e95b1f8cacd2f0ba8