【发布时间】:2018-03-16 05:59:36
【问题描述】:
我有一个简单的接口定义为:
export interface ISnapShot {
val: () => any;
key: string;
forEach: (child: ISnapShot) => boolean;
}
然而,当我尝试在这里实现 forEach 方法时:
export function snapshotToOrderedArray<T = IDictionary>(
snap: ISnapShot,
idProp = 'id'
): T[] {
const output: T[] = [];
snap.forEach((child: ISnapShot) => {
const obj: any = child.val();
const key: string = child.key;
if (typeof obj !== 'object' ) {
throw new Error(`Can't create a list from scalar values: "${obj}" | "${key}"`);
}
output.push( { ...{[idProp]: key }, ...obj } );
return true;
});
return output as T[];
}
我收到此错误:
[ts] '(child: ISnapShot) => boolean' 类型的参数不可分配给'ISnapShot' 类型的参数。 类型 '(child: ISnapShot) => boolean' 中缺少属性 'val'。
不确定如何处理此错误。 ISnapShot 接口明确声明有一个 val 属性。我做错了什么?
【问题讨论】:
-
使用版本
2.4.2
标签: typescript