gpt4 book ai didi

javascript - TypeScript - 如何定义具有任何类型参数的函数类型

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

我是 TypeScript 的新手。

我想定义具有任何类型参数的函数类型。该函数可以是一个参数,也可以是两个以上的参数。

我应该怎么写?

(args: any) => any

只有当一个参数传递给函数时,上面的这种写法才有效。

class NotificationCenter {

private observerList: Array<() => any>;

constructor() {
this.observerList = [];
}

addObserver(observer: () => any): void {

this.observerList.push(observer);

}

}


let notificationCenter: NotificationCenter = new NotificationCenter();

let observer1 = () => {};
let observer2 = (text: string) => {return "observer2"};
let observer3 = (id: number, data: Array<any>) => {return "observer3"};

//This works fine.
notificationCenter.addObserver(observer1);

//Error:Argument of type '(text: string) => string' is not assignable to parameter of type '() => any'.
notificationCenter.addObserver(observer2);

//Error:Argument of type '(id: number, data: any[]) => string' is not assignable to parameter of type '() => any'.
notificationCenter.addObserver(observer3);

最佳答案

你说函数可以有一个参数,也可以有两个以上的参数。听起来它可以有一个或三个或更多参数。然后你必须让它重载。

function foo(arg: any): any { /*do work*/ }
function foo(arg: any, arg2: any, ...rest: any[]): any { /*do work*/ }

关于javascript - TypeScript - 如何定义具有任何类型参数的函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335842/

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