lodash 如何将其转换为布尔值[]?

问题描述 投票:0回答:1

我正在尝试在打字稿中编写一个函数,该函数验证对象是否具有某些属性,但我一开始就陷入困境,键 xyz 是否存在?我尝试使用以下代码来做到这一点:

import _ from 'lodash/fp'; 

type Pred = (o: Object) => boolean

const required_keys: Pred[] = _.map(_.has,['id','field1'])
const validate: Pred = _.overEvery(required_keys)

我预计

required_keys
的类型将是
Pred[]
,但打字稿LSP告诉我它是
boolean[]
。我预计在我们将一个参数应用于
_.has
之后,我仍然必须应用另一个正在测试的对象

是我错了还是LSP,LSP和我如何才能达成协议?

typescript lodash
1个回答
0
投票

通过显式指定参数,可以推断出正确的类型:

const required_keys: Pred[] = _.map(p => _.has(p), ['id', 'field1']);
const validate: Pred = _.overEvery(required_keys);

我可以在类型定义中看到这两个函数的许多重载。编译器似乎无法确定哪些适用。

按照我的理解,使用

lodash/fp
的规范方式是
_.map(_.has)(['id', 'field1'])
,但这并不能解决您最初的问题,也不能使用显式 lambda 参数,因为它的类型将被推断为
unknown

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.