2014-12-17 9 views
5

के लिए प्रकार परिभाषा त्रुटि के आसपास कार्य करें मैं टाइपस्क्रिप्ट में FormData का उपयोग करना चाहता हूं। दुर्भाग्यवश, generated typescript definition filesTypescript Issue #1074 में विस्तृत रूप में फ़ॉर्म तत्व के साथ फ़ॉर्मडाटा कन्स्ट्रक्टर का समर्थन नहीं करता है।टाइपस्क्रिप्ट: जावास्क्रिप्ट निर्मित

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

कोड निम्न त्रुटि देता है क्योंकि generated definition गलत है::

मैं निम्नलिखित कोड है

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

मैं निम्नलिखित घोषणा उपयोग करना चाहते हैं:

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

लेकिन, अगर मैं उस प्रकार की परिभाषा को शामिल करता हूं, तो मुझे यह त्रुटि मिलती है:

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

मैं इस मुद्दे के आसपास कैसे काम कर सकता हूं?

उत्तर

3

How can I work around this issue?

संभावित 1:

एक जनसंपर्क भेजें।

संभावित 2:

अद्यतन जगह में भेज दिया lib.d.ts:

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

संभावित 3:

कॉपी और lib.d.ts अनुकूलित और --noLib साथ संकलन और मैन्युअल रूप से आपका lib.d.ts के संदर्भ हैं।

संभावित 4:

बाईपास प्रकार-चेकर

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

क्षमा कर रहे हैं, मुझे उम्मीद थी मैं सिर्फ नए घोषणा शामिल हो सकते हैं। – Joe

0

वहां पहले से ही है एक bug on GitHub। यह टाइपस्क्रिप्ट 1.6 में फिक्सिंग के लिए लक्षित है।

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

और उत्पन्न जावास्क्रिप्ट, तुम बस क्या चाहता था:

var formData = new FormData(formEl); 

यह काम करने के बाद भी वे lib को ठीक रखना चाहिए

तब तक, इस टाइपप्रति में एक सरल समाधान नहीं है। डी.एस. मुद्दे।

1

वीएस2017 टाइपस्क्रिप्ट पुस्तकालयों में एक बग है (जो अप्रैल 2017 अपडेट में तय हो सकता है)। आप भाषा में सेवा सेवा को बंद करके नोट किए गए त्रुटि के आसपास हो सकते हैं | विकल्प | टेक्स्ट संपादक | जावास्क्रिप्ट/टाइपस्क्रिप्ट | भाषा सेवा बस "नई जावास्क्रिप्ट भाषा सेवा सक्षम करें" को अनचेक करें। चेकबॉक्स। मुद्दे की

अधिक जानकारी पर https://developercommunity.visualstudio.com/content/problem/25310/unload-projects-hangs-on-close-solution.html

संबंधित मुद्दे