打字稿中的lambda表达式的类型

我正在尝试将一个返回字符串的lambda表达式赋给一个属性,根据API描述,该属性接受类型(String | Object [] | Function).

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

它似乎工作,然而,webstorm说“

assigned expression of type (feature:any) => string is not assignable
to type string

所以我尝试使用类型断言:< string>(feature)=> {…}似乎没有效果.我怎样才能满足webstorm(不抑制信息)?

最佳答案 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);
点赞