我将一些课程从传统形式转换为:

class TestOverloads {
    private status = "blah";
    public doStuff(selector: JQuery);
    public doStuff(selector: string);
    public doStuff(selector: any) {
        alert(this.status);
    }
}

要改用箭头函数表达式,请执行以下操作:

class TestOverloads2 {
    private status = "blah";
    public doStuff = (selector: any) => {
        alert(this.status);
    }
}

以避免在回调中使用类方法时出现范围界定问题(参见here了解背景).

不过,我不知道如何重新创建重载函数签名.使用胖箭头时,我将如何编写重载?

推荐答案

可以为函数支持的调用签名编写内联类型文字:

class TestOverloads2 {
    private status = "blah";
    public doStuff: {
        (selector: JQuery): void;
        (selector: string): void;
    } = (selector: any) => {
        alert(this.status);
    }
}

这有点可怕,所以你可能想把它提取到一个接口中:

interface SelectByJQueryOrString {
    (selector: JQuery): void;
    (selector: string): void;
}

class TestOverloads3 {
    private status = "blah";
    public doStuff: SelectByJQueryOrString = (selector: any) => {
        alert(this.status);
    }
}

Typescript相关问答推荐

如何基于对象关键字派生类型?

即使子网是公共的,AWS CDK EventBridge ECS任务也无法分配公共IP地址

为什么typescript不能推断类的方法返回类型为泛型''

如何推断哪个特定密钥与泛型匹配?

TypeScript:在作为参数传递给另一个函数的记录中对函数的参数实现类型约束

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

如何提取密钥及其对应的属性类型,以供在新类型中使用?

参数属性类型定义的REACT-RUTER-DOM中的加载器属性错误

如何在typescript中为this关键字设置上下文

使用TypeScrip的类型继承

编译TypeScrip项目的一部分导致错误

为什么TypeScrip不能解析对象析构中的赋值?

缩小对象具有某一类型的任意字段的范围

是否可以通过映射类型将函数参数约束为预定义类型?

埃斯林特警告危险使用&as";

可以用任意类型实例化,该类型可能与

如何将 MUI 主题对象的自定义属性与情感样式组件中的自定义props 一起使用?

如何在由函数参数推断的记录类型中具有多个对象字段类型

Select 器数组到映射器的Typescript 泛型

如何编写一个接受 (string|number|null|undefined) 但只返回 string 且可能返回 null|undefined 的函数?