所以我们可以做:

export function myMethod (param: number) :number
export function myMethod (param: string) :string

export function myMethod (param: string | number): string | number {
  if (typeof param === 'string') {
    return param.toUpperCase()
  } else {
    return param + 1
  }
}

我可以用arrow函数声明并实现它吗?

export var myMethodArror = (param: string): string
export var myMethodArror = (param: number): number

export var myMethodArror = (param: string | number): string | number => {
..
}

我知道不可能复制变量声明,但我的问题是:是否可以使用箭头符号使函数重载?

推荐答案

我猜它是在当时和现在之间添加的,因为现在可以使用接口或类型(没关系,除了关键字之外,语法相同).当然也可以作为出口.但函数必须命名(我认为所有重载函数都必须命名),因此如果要将其用作回调函数,必须首先声明它.

type IOverload = {
    (param: number): number[];
    (param: object): object[];
}

const overloadedArrowFunc: IOverload = (param: any) => {
    return [param, param];
}

let val = overloadedArrowFunc(4);

我更喜欢这样,这样可以减少重复书写的需要.一次又一次地写这个名字很烦人.

另外,为了回答任何与此相关的问题,是的,我在实现中声明了参数为any.在当前状态下,这是必要的,以允许编译,是的,正如@ford04所指出的,您将在函数中失go 类型安全性.在函数及其返回方面,typescript似乎仍然无法正确处理标记的联合.或者,你可以有更严格的参数,但你将不得不投回任何.

Typescript相关问答推荐

与Prettify助手类型中的对象相交?

"@ clerker/nextjs/server没有名为clerkMiddleware的导入成员'

Typescript:将内部函数参数推断为子对象键的类型

为什么在TypScript中写入typeof someArray[number]有效?

Angular 过滤器形式基于某些条件的数组控制

在将对象从一个对象转换成另一个对象时,可以缩小对象的键吗?

TypeScript Page Routing在单击时不呈现子页面(React Router v6)

React typescribe Jest调用函数

基于键的值的打字动态类型;种类;

Typescript泛型类型:按其嵌套属性映射记录列表

如何在TypeScrip中从字符串联合类型中省略%1值

如果字符串文字类型是泛型类型,则用反引号将该类型括起来会中断

如何判断对象是否有重叠的叶子并产生有用的错误消息

已解决:如何使用值类型限制泛型键?

使用条件类型的类型保护

如何为带有参数的函数类型指定类型保护?

推断集合访问器类型

T的typeof键的Typescript定义

可以';t使用t正确地索引对象;联合;索引类型

对象只能使用 Typescript 中另一个对象的键