2016-11-08 43 views
2

我想分配一個返回字符串的lambda表達式,根據API描述,它接受類型(String | Object [] | Function)。打字稿中的lambda表達式的類型

this._popupTemplate.content = (feature) => { 
      var template: string; 
      //.... 
      return template;  
     } 

它似乎是工作,但是,webstorm說 「

分配型的表達(特徵:任何)=>字符串不是分配 鍵入串

所以我嘗試使用類型斷言:<string>(feature) => {...}這似乎沒有任何效果。我怎樣才能滿足webstorm(沒有壓制信息)?

+1

看起來像是'this._popupTemplate.content'是一個字符串而不是'String |對象[] | Function'。你可以仔細檢查它的類型定義嗎?請記住,類型定義**可能不等於API描述,它可能已過時。 – goenning

回答

1

Labmda表達

(feature) => { 
    var template: string; 
    //.... 
    return template;  
} 

是寫正常的功能這樣

function(feature) { 
    var template: string; 
    //.... 
    return template; 
} 

的問題只是簡單的辦法是你想分配功能本身,而不是它的價值。你必須先執行它。在函數(或lambda)周圍添加括號,然後通過添加帶括號的括號來執行它。像這樣:

this._popupTemplate.content = ((feature) => { 
     var template: string; 
     //.... 
     return template;  
    })(feature);