2016-09-28 7 views
-1

まあ、私は完全に不自然だと思うことをしようとしています。私がする必要がどのようなTypescriptでの条件付きダブルリターン

、そのように、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); 
} 

私はその私が関数を呼び出している(私の[ngClass]文のexists値を取得する方法がわからないので、それはオブジェクトでいたとき):誰もが素晴らしいだろう、別の方法を知っている場合/

+1

それは、異なる種類のデータを返すために、わずかに安全ではないされていません。ここで[ngClass]文の機能はありますか? – Zeokav

+0

これを呼び出す関数は、オブジェクトを値として受け取ることを想定しています。どちらの場合でもオブジェクトを返す必要があります。 – Barmar

+0

[ngClass]でオブジェクトの特定の値を取得する方法を知っていますか?私はオブジェクト全体を取得することしかできないので、必要なブール値を取得することができない –

答えて

-1

Nevermind。

私のループを2回使用しましたが、コードを最適化しようとしていました。

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

ゆえ!datas.existsは動作しません、ブールにはexistsはありません。あなたのチェックのためにtypeof datas === "boolean"を使用してください。