typescript - 从数组中过滤未定义时的打字稿类型错误
问题描述
我想像这样从数组中过滤未定义的项目
type Kind = 'foo' | 'bar'
const someFunc = () : Array<{ kind: Kind, name: string }> => {
return [{ kind: 'foo', name: 'a' }].filter(x => x !== undefined)
}
给出以下类型错误:
Type '{ kind: string; name: string; }[]' is not assignable to type '{
kind: Kind; name: string; }[]'.
Type '{ kind: string; name: string; }' is not assignable to type '{
kind: Kind; name: string; }'.
Types of property 'kind' are incompatible.
Type 'string' is not assignable to type 'Kind'.
为什么会失败,如何处理?
解决方案
因为 TypeScript 是从[{ kind: 'foo', name: 'a' }]
. 如果你告诉它数组的类型是什么,它会更快乐。:)
type Kind = 'foo' | 'bar'
const someFunc = (): Array<{ kind: Kind; name: string }> => {
const array: Array<{kind: Kind; name: string}> = [{ kind: 'foo', name: 'a' }];
return array.filter(x => x !== undefined)
}
推荐阅读
- android - Android ROOM - 如何在对象内插入对象(即 Flash Card Deck 有一个问题列表)
- flutter - Flutter 中的动态自定义日历
- reactjs - KendoReact 网格复选框过滤器
- r - 如何找到附图中箭头突出显示的点的 x 值?
- android - 关于 Android 中的启动模式的问题
- swift - 在 swift 中,有没有办法只在 for 循环中检查数组的一部分(具有设定的起点和终点)
- lwm2m - Lwm2m protocol: is BootStrap server mandatory?
- node.js - Getting error while adding record into mongodb using mongoose and Node.js
- python - Converting list of milliseconds with NaN values to date in python
- html - why is input button's size different from css style?