TypeScript - 如何定义具有任何Type的参数的Function Type

时间:2016-03-31 14:09:42

标签: javascript typescript

我是TypeScript的新手。

我想定义具有任何Type的参数的Function Type。 该函数可以是一个参数或两个以上的参数。

我该怎么写?

(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);

1 个答案:

答案 0 :(得分:0)

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

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