TypeScript中Lambda的类型是什么?Angular英雄指南handleError显式返回类型问题
在TypeScript中Lambda的类型与Angular handleError方法的显式返回类型
一、TypeScript中Lambda的类型是什么?
在TypeScript里,Lambda(箭头函数)的类型是具体的函数类型,它由参数类型和返回值类型共同定义,格式为:(参数列表: 类型) => 返回值类型。
举个简单例子:
// 这个箭头函数的类型是 (num: number) => number const double = (num: number): number => num * 2;
别用Function类型标注箭头函数——它是个过于宽泛的类型,会丢失参数和返回值的类型细节,完全发挥不了TypeScript的类型检查优势。
二、Angular handleError方法的显式返回类型怎么写?
你的handleError方法返回的是一个接收error参数并返回Observable(error: any) => Observable<T>,结合泛型T来声明即可。
修改后的完整代码如下:
import { Observable, of } from 'rxjs'; // 显式声明返回类型:(error: any) => Observable<T> private handleError<T>(operation = 'operation', result?: T): (error: any) => Observable<T> { return (error: any): Observable<T> => { this.log(`${operation} failed: ${error.message}`); return of(result as T); }; }
为什么不用Function类型?
Function类型没有任何参数和返回值的类型约束,TypeScript无法验证你返回的函数是否符合预期签名。而(error: any) => Observable<T>是精确的函数类型,它明确告诉TypeScript:这个返回的函数必须接收一个any类型的error参数,并且返回Observable<T>类型的值,能严格保证类型安全。
内容的提问来源于stack exchange,提问作者Dave Branning
相关产品推荐
相关产品推荐

