TypeScript中如何实现可选值的map映射操作?
TypeScript 实现类似 Swift 可选类型的
.map功能 很多语言(比如Swift)支持对可选类型调用.map方法,示例代码如下:
let value: Int? = 1 let doubled = value.map { $0 * 2 }
这里doubled的类型为Int?,若value不为空则返回其值的两倍,为空则保持nil。
但在TypeScript中没有原生的类似功能,目前能实现的写法非常繁琐:
const value: number | undefined = 2; const double = value !== undefined ? value * 2 : undefined;
这种写法不仅冗余,当value是对象深层路径的取值时,扩展性也很差。
请问TypeScript中有没有更简便的方法,能在值存在时执行转换逻辑,不存在则直接返回undefined?
补充说明
我了解空值合并运算符,但这不是我需要的功能。我需要的是值不为undefined时执行自定义转换,为空则直接返回undefined。空值合并仅适用于简单类型(比如示例中的number),面对复杂类型时无法满足需求,比如:
const value: Date | undefined = /* 某个可能存在的日期实例 */ const adjusted = value ? performComplexDateOperation(value) : undefined;
推荐解决方案
通过评论区的提示,我找到了最优的实现方式:
function map<A, B>(value: A | undefined, f: (value: A) => B): B | undefined { if (value === undefined) return undefined; return f(value); }
使用示例:
const value: Date | undefined = /* 某个可能存在的日期实例 */ const adjusted = map(value, date => performComplexDateOperation(date));
内容的提问来源于stack exchange,提问作者deanWombourne
相关产品推荐
相关产品推荐

