2016-09-28 65 views
-1

嗯,我試圖做一些我認爲完全不自然的事情。雙擊打印字體中的條件

我需要做的,是依賴於if返回不同的值,這樣的:

if(add) 
    return {exists: myExists, key: myKey}; 

return myExists; 

但後來我:error TS2339: Property 'exists' does not exist on type '{ exists: boolean; key: number; } | boolean'.在編譯時,我調用該函數的結果在其他地方。

這裏是我的錯誤(return語句在IsInDays(value, add)

AddDay(value){ 
    var datas = this.IsInDays(value, true); 
    if(!datas.exists) 
     this.days.push(value); 
    else{ 
     this.days.splice(datas.key, 1); 
    } 

    console.log(this.days); 
} 

我這樣做,因爲我不知道如何讓exists價值爲我[ngClass]語句(調用函數),當它在一個對象:/

如果有人知道一種不同的方式,這將是真棒

+1

返回不同類型的數據不是不安全嗎? – Zeokav

+0

調用它的函數預期將接收一個對象作爲值。你需要在兩種情況下返回一個對象。 – Barmar

+0

你知道如何用[ngClass]獲得對象的具體價值嗎?因爲我只能設法獲得整個對象,而不是我需要的布爾值 –

回答

-1

沒關係。

我使用了我的循環兩次,我只是想優化我的代碼。以下是[ngClass]聲明的功能:

IsInDays(value){ 
    for (var item of this.days) { 
     if(item == value){ 
      return true; 
     } 
    } 
} 
0

採用可選類型這樣做。

function doesStuff(condition: boolean): string | { name: string, age: number } { 
    if (condition) { 
     return {name: 'A', age: 5}; 
    } 
    return 'not found'; 
} 
0

有布爾沒有exists,因此!datas.exists將無法​​正常工作。使用typeof datas === "boolean"作爲您的支票。