我是 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/