在 TypeScript 中设置箭头函数的返回类型
Set the return type of a arrow function in TypeScript
您可以在 TypeScript 的参数后立即设置箭头函数的返回类型。
一旦设置了函数的返回类型,类型检查器就会提醒我们函数是否返回不同类型的值。
索引.ts
// 👇️ with arrow function const greet = (name: string): string => { return `Hello ${name}`; }; console.log(greet('Bobby Hadz')); // 👉️ "Hello Bobby Hadz"
这是一个在类中设置箭头函数返回类型的示例。
索引.ts
class Employee { constructor(public name: string) { this.name = name; } // 👇️ with class method greet = (): string => { return `Hello ${this.name}`; }; } const employee = new Employee('Bobby Hadz'); console.log(employee.greet()); // 👉️ "Hello Bobby Hadz"
该
greet
函数接受一个 type 参数并返回一个 type 值。 string
string
现在我们已经设置了函数的返回类型,如果我们尝试返回不同类型的值或忘记从函数返回值,类型检查器将抛出错误。
索引.ts
// ⛔️ A function whose declared type is neither // 'void' nor 'any' must return a value.ts(2355) const greet = (name: string): string => { // return `Hello ${name}`; };
示例中的问题是该函数不返回任何内容,但返回类型为string
.
显式键入函数很有用,因为它允许我们利用类型检查器。
TypeScript 有时可以推断返回类型
如果我们没有设置函数的返回类型,TypeScript 会尝试推断它。
索引.ts
// 👇️ const greet: (name: string) => string const greet = (name: string) => { return `Hello ${name}`; };
在这种情况下,TypeScript 能够推断出函数的返回类型。string
但是,如果我们因为没有设置函数的返回类型而忘记返回 a,它不会提醒我们。
索引.ts
// 👇️ no errors const greet = (name: string) => { // return `Hello ${name}`; };
使用类型别名或接口
如果您的函数定义很忙,请将返回类型提取到类型别名或接口中。
索引.ts
type Person = { name: string; salary: number; department: string; }; const getEmployee = (): Person => { return { name: 'Bobby Hadz', salary: 100, department: 'development', }; };
当你的函数定义变得很忙或者你必须在多个地方重用一个类型时,类型别名和
接口很有用。
使用隐式箭头函数返回
使用隐式箭头函数返回时的语法相同。
索引.ts
type Person = { name: string; salary: number; department: string; }; // 👇️ implicit arrow function return const getEmployee = (): Person => ({ name: 'Bobby Hadz', salary: 100, department: 'development', });
返回多种类型之一的箭头函数
如果您的箭头函数可能返回不同类型的值,请使用
联合类型。
索引.ts
function getStringOrNumber(): string | number { if (Math.random() > 0.5) { return 100; } return 'bobbyhadz.com'; }
示例中的函数返回类型为string
or的值number
。
我还写了一篇关于
如何定义具有多种类型的数组的文章。
设置类中箭头函数的返回类型
如果使用箭头函数定义类方法,则可以在其参数后立即设置箭头函数的返回类型。
索引.ts
class Employee { constructor(public name: string) { this.name = name; } // 👇️ string return type greet = (): string => { return `Hello ${this.name}`; }; } const employee = new Employee('Bobby Hadz'); console.log(employee.greet()); // 👉️ "Hello Bobby Hadz"
该greet
方法的返回类型为string
,因此尝试返回不同类型的值会导致错误。
如果您需要
在箭头函数中使用泛型,请单击链接并按照说明进行操作。
如果您需要将函数作为参数传递,请查看
以下文章。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: