gpt4 book ai didi

javascript - 如何使用 TypeScript 为多个函数重用函数签名

转载 作者:行者123 更新时间:2023-12-04 09:08:10 29 4
gpt4 key购买 nike

考虑以下代码:

type TCallBack = () => void

const subscriptions: { [key: string]: TCallBack[] } = {}

interface ISubscription {
eventName: string
callback: TCallBack
}

export function unsubscribe({ eventName, callback }: ISubscription) {
// ...
}

export function subscribe({ eventName, callback }: ISubscription) {
// ...
}

export function subscribeOnce({ eventName, callback }: ISubscription) {
// ...
}

函数签名 { eventName, callback }: ISubscription用于多种功能。有没有办法避免复制此签名但重用它?我在想像下面这样的东西会很棒:
const functionSignature = { eventName, callback }: ISubscription
export function subscribe(functionSignature ) {
但这当然行不通。感谢您的帮助。

最佳答案

您可以定义一个类型来确定您的输入参数和返回类型,然后像这样编写实现:

type TCallBack = () => void

const subscriptions: { [key: string]: TCallBack[] } = {}

interface ISubscription {
eventName: string
callback: TCallBack
}

type FunctionType = (subscription: ISubscription) => void

export const unsubscribe: FunctionType = ({ eventName, callback }) => {

}

export const subscribe: FunctionType = ({ eventName, callback }) => {

}

export const subscribeOnce: FunctionType = ({ eventName, callback }) => {

}
但是正如评论中提到的,这不是一个很好的方法,因为它没有给您带来太多好处,而是在某些重构场景中引起问题。

关于javascript - 如何使用 TypeScript 为多个函数重用函数签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63408946/

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