如何解决Typescript类型预测元组元素
我有一个类型为Array<[string,unknown]>
的数组。我想通过.type
属性的元组的第二个元素来过滤此数组。
应用过滤器后,我无法得出能够正确给出输出数组正确类型的类型预测。
我已经尝试过了:
- 预测功能:
const isSchemaProp = (entry: unknown): entry is [string,{ type: string }] => {
const [,value] = entry as [string,{ type: sting }];
return value.type !== undefined;
};
- 但是
const newArr = arr.filter(entry => isSchemaProp(entry)) // Second element of each element is still unknown
解决方法
filter
的回调函数参数必须是具有谓词类型的函数,以便更改filter
的返回类型。从回调内部调用类型断言是不够的。
const newArr = arr.filter(
(entry): entry is [string,{ type: string }] => {
return isSchemaProp(entry)
}
)
或者,由于类型谓词具有此功能,因此您可以直接将其传递:
const newArr = arr.filter(isSchemaProp)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。