2017-05-29 93 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; 
}); 
相關問題