Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript:解决javascript内置的类型定义错误_Types_Typescript - Fatal编程技术网

Typescript:解决javascript内置的类型定义错误

Typescript:解决javascript内置的类型定义错误,types,typescript,Types,Typescript,我想在打字脚本中使用。遗憾的是,不支持带有表单元素的FormData构造函数,如中所述 我有以下代码: var formEl = <HTMLFormElement> document.getElementById("myForm"); var formData = new FormData(formEl); 但是,如果包含该类型定义,则会出现以下错误: 错误TS2403:后续变量声明必须具有相同的类型。变量“FormData”的类型必须为“{new():FormData;proto

我想在打字脚本中使用。遗憾的是,不支持带有表单元素的FormData构造函数,如中所述

我有以下代码:

var formEl = <HTMLFormElement> document.getElementById("myForm");
var formData = new FormData(formEl);
但是,如果包含该类型定义,则会出现以下错误:

错误TS2403:后续变量声明必须具有相同的类型。变量“FormData”的类型必须为“{new():FormData;prototype:FormData;}”,但此处的类型为“{new(form?:HTMLFormElement):FormData;prototype:FormData;}”

我如何解决这个问题

我如何解决这个问题

潜力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);
var formEl=document.getElementById(“myForm”);
var formData=新窗口['formData'](formEl);
已经有一个。它的目标是在TypeScript 1.6中修复

在此之前,这是TypeScript中的一个简单解决方法:

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

即使在他们修复lib.d.ts问题后,这项功能仍应继续工作。

VS2017 typescript库中存在一个错误(可能已在2017年4月的更新中修复)。您可以通过关闭Tools | Options | Text Editor | JavaScript/TypeScript | LanguageService中的LanguageService来绕过注意到的错误 只需取消选中“启用新的JavaScript语言服务”复选框

有关该问题的更多详情,请参阅

糟糕,我希望我能把新的声明包括进去。
var formEl = <HTMLFormElement> document.getElementById("myForm");
var formData = <FormData> new (<any> FormData) (formEl);
var formData = new FormData(formEl);