2014-12-17 15 views
5

Chcę użyć FormData w maszynopisie. Niestety, generated typescript definition files nie obsługuje konstruktora FormData z elementem formularza, jak wyszczególniono w Typescript Issue #1074.Maszynopis: obejrzyj błąd definicji typu dla wbudowanego javascript

Mam następujący kod:

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

Kod daje następujący błąd, ponieważ generated definition jest źle:

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

chcę użyć następujące oświadczenie:

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

Ale jeśli dołączę definicję tego typu, otrzymuję ten błąd:

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; }'.

Jak mogę obejść ten problem?

Odpowiedz

3

How can I work around this issue?

Potencjał 1:

Wyślij PR.

Potencjał 2:

Aktualizacja wysyłają lib.d.ts w lokalu:

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

Potencjał 3:

Kopiowanie i dostosować lib.d.ts i skompilować z --noLib i ręcznie odwołać swój zwyczaj lib.d.ts.

Potencjał 4:

Bypass typ sprawdzania

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

Bummer, miałem nadzieję może po prostu zawierać nową deklarację. – Joe

0

Jest już bug on GitHub. Jest przeznaczony do naprawy w TypeScript 1.6.

Do tego czasu, to jest proste obejście w maszynopisie:

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

A generowane javascript, tylko to, czego chciał:

var formData = new FormData(formEl); 

ten powinien kontynuować pracę nawet po naprawić one lib. problem z dts.

1

Występuje błąd w bibliotekach maszynowych VS2017 (które mogły zostać naprawione w aktualizacji z kwietnia 2017 r.). Możesz obejść błąd zauważony przez wyłączenie usługi LanguageService w menu Narzędzia | Opcje | Edytor tekstu | JavaScript/TypeScript | LanguageService Po prostu usuń zaznaczenie pola "Włącz nową usługę języka JavaScript". pole wyboru.

Więcej szczegółów emisji są na https://developercommunity.visualstudio.com/content/problem/25310/unload-projects-hangs-on-close-solution.html

Powiązane problemy