打字稿中 lambda 表达式的类型

net*_*tik 5 lambda typescript

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

 this._popupTemplate.content = (feature) => {
            var template: string; 
            //....
            return template;    
      }
Run Code Online (Sandbox Code Playgroud)

它似乎有效,但是,webstorm 说“

类型(特征:任何)=> 字符串的分配表达式不能分配给类型字符串

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

Eri*_*pal 6

Labmda 表达式

(feature) => {
    var template: string; 
    //....
    return template;    
}
Run Code Online (Sandbox Code Playgroud)

只是像这样编写普通函数的更简单方法

function(feature) { 
    var template: string; 
    //....
    return template;
}
Run Code Online (Sandbox Code Playgroud)

问题是你试图分配函数本身,而不是它的值。你必须先执行它。在函数(或 lambda)周围添加括号,然后通过在其后添加带参数的括号来执行它。像这样:

this._popupTemplate.content = ((feature) => {
        var template: string; 
        //....
        return template;    
    })(feature);
Run Code Online (Sandbox Code Playgroud)