首页 > 解决方案 > 从选项数组中过滤掉无的最佳方法

问题描述

假设我有以下类型:

type OptionalArray = ReadonlyArray<Option<number>>
type DatabaseWriteArray = ReadonlyArray<number>

那么如何在类型之间进行转换呢?以下工作但感觉超级混乱:

const filterOptionals = (optionalArray: OptionalArray): DatabaseWriteArray => {
  const filteredNullableArray = optionalArray.filter(isSome).map(toNullable)
  return filteredNullableArray.filter(num => num !== null)
}

在这一点上,我什至不确定如果我必须立即将它们退出为可空值,我为什么还要为选项而烦恼。我可以通过少一步使用number | null. 那么fp-ts做到这一点的“方法”是什么?

标签: typescriptoptionalfp-ts

解决方案


无需过多了解细节,我可以建议使用readonlyArray.compactwhich 正是这样做的(甚至具有相同的签名):

import { readonlyArray } from 'fp-ts';

const filterOptionals = readonlyArray.compact;

推荐阅读