【发布时间】:2021-08-09 13:14:11
【问题描述】:
我有一个包含两个可能值的数组。它可能包括一个预期的对象,或者一个定义错误的对象。数据可能如下所示:
// mixedData
[
{ item1: "value", item2: "value2" },
{ error: true, description: "no value found" },
];
我为这个数组制作了两种类型。一个用于有效对象,一个用于错误对象。然后我像这样定义我的数组:
const myArray: Array<IValid | IError> = [] // fetched from api
接下来我想从数组中删除每个带有错误字段的对象,只留下IValid 对象:
const filteredData: IValid[] = mixedData.filter(
(obj: IValid | IError) => !obj.hasOwnProperty("error")
);
这可行,但 TypeScript 并不喜欢这样,因为它仍然认为一个项目可能是 IError:
Error: Type '(IValid| IError)[]' is not assignable to type 'IValid[]'.
如何让 TypeScript 在这里快乐?
【问题讨论】:
标签: javascript typescript typescript-generics