我目前正在涉足打字稿中更高级的类型,并且想知道如何定义一个像超脚本中的函数一样的函数。我尝试了各种方法,但我无法成功重载该h
函数并使使用注释下列出的所有 CallExpressions 都通过。
这是我到目前为止所拥有的:
interface IProps {
[key: string]: any;
}
function h(tag: string, props?: IProps): void;
function h(tag: string, children: string): void; // <- marked as invalid
function h(tag: string, props: IProps, children?: string): void {
// ...code goes here
}
用法:
h("div");
h("div", "Hello World");
h("div", { className: "test" });
h("div", { className: "test" }, "Hello World"); // <- marked as invalid