0

TypeScript hatası Visual Studio 2015 Professional Update 2 çalıştırıyorum ve bir istemci sistemi için çözüm oluştururken düzenli olarak bir TypeScript hatası alıyorum. Özellikle hatadır:jQueryUI AutoComplete ile VS2015'de

TS2345 Argument of type 
    '{ 
     source: (req: any, resp: any) => void; 
     focus: (event: any, ui: any) => void; 
     minLength: number; 
     ...' 
    is not assignable to parameter of type 'AutocompleteOptions'. 
    Object literal may only specify known properties, and 'focus' does not exist 
    in type 'AutocompleteOptions'. 

jQueryUI documentation for autocomplete baktı, bu meşru olduğu anlaşılıyor. aşağıdaki gibi

(bir init() işlev içinde) bu hataya neden kod parçasıdır:

$(lookupElem).autocomplete({ 
    source: (req, resp) => this.onAutoCompleteRequest(req, resp), 
    focus: (event, ui) => { 
     // Don't populate input field with selected value (pxid) 
     event.preventDefault(); 
    }, 
    minLength: 3, // Don't call autocomplete until specified number of characters have been input 
    select: (e, ui) => this.onItemSelected(e, ui) 
}); 

Bu VS2013 içinde çalıştı, bu yüzden VS2015 ilgili sorun yaşayan niçin emin değilim. Bu, çözümün geri kalanının (ör. Azure bileşenleri, ayrı MVC web sitesi) yapının bozulmasına neden oluyor, ayrıca kaynak klasörümdeki mevcut .js ve .js.map dosyalarını siliyor.

nasıl yapabilirim ya:

  • düzeltme bu; veya
  • , bu hatayı Visual Studio'dan tamamen bastırır? Typescript araçları

Benim versiyon kadar güncel Araçlar => Uzantılar ve Güncellemeler içinden gibi görünen 1.8.24.0 vardır.

Çok teşekkürler.

cevap

0

Bu VS2013 içinde çalıştı, bu yüzden VS2015 Bunun nedeni daktilo freshness yeni bir özellik olan bir sorunu

yaşıyor neden emin değilim: https://basarat.gitbooks.io/typescript/content/docs/types/freshness.html

Quick Fix

Sadece bir değişkene taşıyın:

const config = { 
    source: (req, resp) => this.onAutoCompleteRequest(req, resp), 
    focus: (event, ui) => { 
     // Don't populate input field with selected value (pxid) 
     event.preventDefault(); 
    }, 
    minLength: 3, // Don't call autocomplete until specified number of characters have been input 
    select: (e, ui) => this.onItemSelected(e, ui) 

}; 
$(lookupElem).autocomplete(config); 

Daha Fix

bir PR Gönder kesinlikle

+0

Büyük daktilo etmek, işe yaradı - teşekkürler bunun için! "Daha iyi düzeltme" açıklayabilir misiniz? Tazelik makalesine dayanarak, sanırım isteğe bağlı özelliklere izin verilebilmesi için autoComplete seçenekleri için '[x: string]: any' içermesi gereken bazı TypeScript tipi bağlamanın olması gerekir. –

+0

@d_mcg no. "Complete" yönteminin kabul ettiği türde "focus: any" ifadesini eklemeniz gerekir – basarat