簡體   English   中英

Typescript參數數量錯誤

[英]Typescript number of arguments error

快速的問題,我相信有人會得到一個快速的答案。

我正在嘗試使用文檔。

document.createElement("button", "option");

由於第二個參數,typescript不喜歡這個,它抱怨它只是期望一個參數而不是兩個被傳遞。 在vanilla JS中,有兩個論點可以接受。

如何讓typescript編譯器允許這個?

它確實看起來像標准定義不允許這樣,似乎是錯誤的。

我猜github上的一個bug會有序。

在此期間,您可以使用其他類型保存該功能。 例如。

let createElement: (tagname: string, options: string) => HTMLElementTagNameMap = document.createElement;

根據標准 ,該第二參數應該是與單個對象is屬性,而不是字符串。 所以,從理論上講,該行應該是:

document.createElement("button", { is: "option" });

使用字符串是較舊規范的一部分,雖然受Chrome支持,但已棄用。

在任何情況下,該重載都不在lib.d.ts中 ,因此您需要在@NitzanTomer描述時自己重載該定義 ,和/或在TypeScript的GitHub 倉庫中創建一個解釋該問題的問題

請注意,您嘗試使用的createElement的重載是Custom Elements規范的一部分,在撰寫本文時,它是一個工作草案,因此TypeScript維護者可能不支持將其添加到lib.d.ts.

定義中缺少它,但您可以輕松添加它:

interface Document {
    createElement(tagName: string, options?: string | { is: string });
}

如果您使用的是模塊系統(導入/導出),那么您需要這樣做:

declare global {
    interface Document {
        createElement(tagName: string, options?: string | { is: string });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM