2016-09-28 66 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"作为您的支票。