TypeScript'te lambda ifadelerinin türü


Bir lambda ifadesini, bir dize döndüren, API açıklamasına göre (String | Object[] | Function) türlerini kabul eden bir özelliğe atamaya çalışıyorum.

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

Çalışıyor gibi görünüyor, ancak WebStorm " diyor

tipi (feature:any) => string olan atanmış ifade tipe string olarak atanamaz

"

Bu yüzden bir tür ataması kullanmayı denedim: <string>(feature) => {...} ancak bu görünüşe göre hiç etkisi olmadı. Webstorm'u (bilgiyi bastırmadan) nasıl memnun edebilirim?

Cevap #1

Lambda ifadesi

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

bu şekilde normal bir fonksiyonu yazmanın sadece daha kolay bir yolu

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

Sorun, fonksiyonun kendisini değil, onun değerini atamaya çalışıyor olmanız. Önce çalıştırmanız gerekiyor. Fonksiyonun (veya lambda) etrafına parantez ekleyin ve ardından argümanlarla birlikte parantez ekleyerek çalıştırın. Şöyle:

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

İlgili makaleler