Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Javascript Typescript参数数错误_Javascript_Typescript - Fatal编程技术网

Javascript Typescript参数数错误

Javascript Typescript参数数错误,javascript,typescript,Javascript,Typescript,快速提问,我相信有人会很快回答这个问题 我正在尝试使用文档 document.createElement("button", "option"); 由于第二个参数,typescript不喜欢这样,它抱怨只希望传递一个参数,而不是两个。在一般情况下,有两个参数是可以接受的 如何让typescript编译器允许此操作 标准定义似乎不允许这样做,而且似乎是错误的 我想github上的一个bug是合适的 同时,作为黑客,您可以使用另一种类型保存函数。比如说 let createElement:(标记名

快速提问,我相信有人会很快回答这个问题

我正在尝试使用文档

document.createElement("button", "option");
由于第二个参数,typescript不喜欢这样,它抱怨只希望传递一个参数,而不是两个。在一般情况下,有两个参数是可以接受的


如何让typescript编译器允许此操作

标准定义似乎不允许这样做,而且似乎是错误的

我想github上的一个bug是合适的

同时,作为黑客,您可以使用另一种类型保存函数。比如说

let createElement:(标记名:string,选项:string)=>htmlElementAttagNameMap=document.createElement;

定义中缺少它,但您可以轻松添加它:

interface Document {
    createElement(tagName: string, options?: string | { is: string });
}
如果您使用的是模块系统(导入/导出),那么您需要这样做:

declare global {
    interface Document {
        createElement(tagName: string, options?: string | { is: string });
    }
}
根据,第二个参数应该是具有单个
is
属性的对象,而不是字符串。因此,理论上,这条线应该是:

document.createElement("button", { is: "option" });
字符串的使用是旧规范的一部分,虽然Chrome支持,但不推荐使用

在任何情况下,该重载都不存在,因此您将需要,和/或创建


请注意,您尝试使用的
createElement
重载是规范的一部分,在撰写本文时,规范是一个工作草案,因此TypeScript维护人员可能不支持将其添加到lib.d.ts。

事实上,您的解决方案要好得多。:)不过,我发现的唯一相关问题是。我们可以从一个新问题中受益。是的,使用界面并将选项声明为可选选项解决了问题,我有点不好意思,我自己没有想到这一点,但非常感谢@Nitzan你真的让我走出了困境