【问题标题】:TypeScript - How to define Function Type having arguments with any TypeTypeScript - 如何定义具有任何类型参数的函数类型
【发布时间】:2016-03-31 14:09:41
【问题描述】:

我是 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);

【问题讨论】:

  • 我想你想要的是(...params : any[]) =&gt; any。见this
  • 谢谢!这就是我需要的!

标签: javascript typescript


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 2021-03-18
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2019-11-21
    • 2022-12-21
    • 2021-12-31
    • 2021-04-23
    相关资源
    最近更新 更多