typescript 函数重载的对象表示怎么用?

作者站长头像
站长
· 阅读数 5
function createElement(
  tag: string
):string;
function createElement(
  tag: number
):number;
function createElement(tag: string | number) {
    return tag
}

上面的函数重载没有报错在阮一峰文章中提到函数重载支持对象表示https://wangdoc.com/typescript/function

type CreateElement = {
  (tag:string): string;
  (tag:number): number;
}

但是我这样使用发现报错

type CreateElement = {
  (tag:string): string;
  (tag:number): number;
}
let c: CreateElement = function createElement(tag: string | number) {
  return tag
}

请问一下这个对象表示的函数重载应该怎么使用?

回复
1个回答
avatar
test
2024-06-28
type CreateElement = {
    (tag: string): string;
    (tag: number): number;
}

function createElement(tag: string): string;
function createElement(tag: number): number;
function createElement(tag: string | number) {
    return tag
}

const f: CreateElement = createElement

重载要有分开的定义,直接联合类型是不对的

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容