如何为输出设置boolean类型?及TypeScript代码类型错误修复
问题解答
1. 如何为输出设置boolean类型?
在TypeScript中,直接在函数参数列表末尾通过: boolean标注返回类型,就能为输出设置boolean类型:
- 普通函数示例:
const isPositive = (num: number): boolean => num > 0;
- 用类型别名定义函数类型时:
type BooleanReturnFunc = (input: string) => boolean; const isEmpty: BooleanReturnFunc = (str) => str.length === 0;
2. 代码问题分析与错误修复
问题点
- 类型定义与实际实现不匹配:
Filter类型别名规定函数返回单个A类型值,但arr.filter(f)实际返回的是Array<A>类型数组,两者类型冲突。 - 回调函数返回类型不符合要求:
Filter要求回调函数f返回A类型(此处调用时A为number),但传入的回调x => x > 3 ? true : false返回的是boolean,因此触发Type 'boolean' is not assignable to type 'number'的类型错误。
修复方案
修正Filter的类型定义,让回调函数返回boolean(符合数组filter方法对回调的要求),同时将函数返回值类型改为Array<A>:
export type Filter = <A>(f: (x: A) => boolean, arr: Array<A>) => Array<A>; const filter: Filter = (f, arr) => arr.filter(f); // 回调可以简化,效果一致 filter(x => x > 3, [1, 2, 3, 4, 5]);
修复后,类型系统能正确识别回调的返回值类型,函数返回值也和arr.filter的实际输出匹配,错误即可解决。
内容的提问来源于stack exchange,提问作者Sahar
相关产品推荐
相关产品推荐

