2014-12-17 17 views
5

FormData yazı tipini kullanmak istiyorum. Ne yazık ki, generated typescript definition files, Typescript Issue #1074'da açıklandığı gibi bir Form Öğesi olan bir FormData yapıcısını desteklemez. generated definition yanlıştır çünküTypescript: javascript yerleşiği için tür tanımı hatası çevresinde çalışma

var formEl = <HTMLFormElement> document.getElementById("myForm"); 
var formData = new FormData(formEl); 

kod aşağıdaki hatayı veriyor:

Aşağıdaki kod var

aşağıdaki bildiriyi kullanmak istiyorum

error TS2346: Supplied parameters do not match any signature of call target.

:

declare var FormData: { 
    prototype: FormData; 
    new (form?: HTMLFormElement): FormData; 
} 

Ancak, bu tür tanımını eklerseniz, bu hatayı alıyorum:

error TS2403: Subsequent variable declarations must have the same type. Variable 'FormData' must be of type '{ new(): FormData; prototype: FormData; }', but here has type '{ new (form?: HTMLFormElement): FormData; prototype: FormData; }'.

Bu soruna nasıl çalışabilirim? Potansiyel 1

cevap

3

How can I work around this issue?

:

bir PR gönder.

Potansiyeli 2:

Güncelleme yerinde sevk lib.d.ts: 3

declare var FormData: { 
    prototype: FormData; 
    new (form?: HTMLFormElement): FormData; 
} 

Potansiyeli:

kopyalayıp özel lib.d.ts referans lib.d.ts özelleştirmek ve --noLib ile derlemek ve manuel.

Potansiyeli 4:

Baypas

var formEl = <HTMLFormElement> document.getElementById("myForm"); 
var formData = new window['FormData'](formEl); 
+0

Bummer üzerindedir. – Joe

0

zaten bug on GitHub var tip-denetleyicisi. TypeScript 1.6'da düzeltmek için hedeflenmiştir. Eğer sadece istediğini

var formEl = <HTMLFormElement> document.getElementById("myForm"); 
var formData = <FormData> new (<any> FormData) (formEl); 

Ve oluşturulan javascript,:

var formData = new FormData(formEl); 

Bu da lib düzeltmek sonra bile çalışmaya devam etmelidir

O zamana kadar bu daktilo basit çözümdür. d.ts sorunu.

1

VS2017 yazı kitaplıklarında (Nisan 2017 güncellemesinde düzeltilmiş olabilir) bir hata var. DilService'yi kapatarak belirttiğiniz hatanın farkına varabilirsiniz. Araçlar | Seçenekler | Metin Düzenleyici | JavaScript/TypeScript | LanguageService Sadece "Yeni JavaScript dil hizmetini etkinleştir" seçeneğinin işaretini kaldırın. onay kutusu. Sorunun

Daha fazla detay Ben yeni bildiriyi dahil sadece umuyordum, https://developercommunity.visualstudio.com/content/problem/25310/unload-projects-hangs-on-close-solution.html

İlgili konular