gpt4 book ai didi

typescript - 如何在 TypeScript 中重用函数签名定义

转载 作者:搜寻专家 更新时间:2023-10-30 20:42:24 25 4
gpt4 key购买 nike

我有以下代码:

class A {
constructor(public n: number) {}

defaultFn(a: number): number {
return a + 1;
}

doStuff(callback?): number {
return callback ? callback(this.n) : this.defaultFn(this.n);
}
}

我如何告诉 TypeScript 传递给 doStuff 方法的可选 callback 函数应该与 defaultFn 方法具有相同的签名?

最佳答案

interface Callback {
(n:number):number;
}

class A {
constructor(public n: number) { }

public readonly defaultFn: Callback = (a: number): number => {
return a + 1;
}

public doStuff(callback?: Callback): number {
return callback ? callback(this.n) : this.defaultFn(this.n);
}
}

你也可以简单地这样做

doStuff(callback?: (n:number)=>number): number {
return callback ? callback(this.n) : this.defaultFn(this.n);
}

或者结合一个接口(interface)

interface Callback {
(n:number):number;
}

doStuff(callback?: Callback): number {
return callback ? callback(this.n) : this.defaultFn(this.n);
}

关于typescript - 如何在 TypeScript 中重用函数签名定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47241357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com