打字稿抱怨缺少不丢失的财产

时间:2017-10-04 18:22:25

标签: typescript

我有一个简单的界面定义为:

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]   类型的参数&#39;(child:ISnapShot)=&gt;布尔&#39;不能分配给类型&#39; ISnapShot&#39;的参数。     物业&#39; val&#39;类型&#39;(child:ISnapShot)=&gt;布尔&#39;

enter image description here

不确定该错误的原因。 ISnapShot界面清楚地表明存在val属性。我做错了什么?

0 个答案:

没有答案