2017-05-29 92 views
-2

以下代码有什么问题。 它抱怨void不能分配给布尔值为const invalidResult。Angular TypeScript错误:类型'void'不可分配为键入'boolean'

isSubmitDisabled(): boolean { 

    const results: Result[] = this.getLFResults(); 

    const invalidResult: boolean = results.forEach(function(result) { 
     if (result.indicators.length === 0) { 
      return true; 
     } 
     return false; 
    }); 

    return results.length === 0 || invalidResult; 
    // return results.length === 0; 
} 

getLFResults(): Result[] { 

    if (!this.logframe) { 
     const results: Result[] = []; 
     this.store.select(getCurrentLogFrameState) 
      .map((logframe) => { 
       this.logframe = logframe; 
      }) 
      .catch((err) => { 
       return results; 
      }); 
     if (this.logframe !== null && this.logframe !== undefined) { 
      return this.logframe.results; 
     } else { 
      return results; 
     } 
    } 
} 

回答

0

因为Array.forEach不返回任何东西。您可能正在寻找Array.some将返回一个boolean如果任何项目满足confition:

const invalidResult: boolean = results.some(function (result) { 
    return result.indicators.length === 0; 
}); 
2

forEach method不返回一个值,该signature of the method是:

forEach(callbackfn: (this: void, value: T, index: number, array: T[]) => void): void; 

你可能想使用返回boolean的every method

results.every(function (result) { 
    if (result.indicators.length === 0) { 
     return true; 
     } 
    return false; 
}); 

还是some method

results.some(function (result) { 
    if (result.indicators.length === 0) { 
     return true; 
    } 
    return false; 
}); 
相关问题