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

Javascript TypeScript-如何定义具有任何类型参数的函数类型,javascript,typescript,Javascript,Typescript,我是打字新手 我想定义具有任何类型参数的函数类型。 函数可以是一个参数,也可以是两个以上的参数 我该怎么写 (args: any) => any 只有在将一个参数传递给函数时,上述编写方法才有效 class NotificationCenter { private observerList: Array<() => any>; constructor() { this.observerList = []; } add

我是打字新手

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

我该怎么写

(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);
班级通知中心{
私有observerList:Array any>;
构造函数(){
this.observerList=[];
}
添加观察者(观察者:()=>任何):无效{
this.observerList.push(observer);
}
}
让notificationCenter:notificationCenter=新建notificationCenter();
让observer 1=()=>{};
让observer2=(text:string)=>{return“observer2”};
让observer 3=(id:number,data:Array)=>{return“observer 3”};
//这个很好用。
notificationCenter.addObserver(observer 1);
//错误:类型为“(text:string)=>string”的参数不能分配给类型为“()=>any”的参数。
notificationCenter.addObserver(observer 2);
//错误:类型为“(id:number,data:any[])=>string”的参数不能分配给类型为“()=>any”的参数。
notificationCenter.addObserver(observer 3);

您说函数可以有一个参数或两个以上的参数。听起来它可以有一个或三个或多个参数。那你就得超负荷了

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

我想你想要的是
(…参数:any[])=>any
。看,谢谢!这就是我需要的!