在0.9.5中使用任何输入键入函数

时间:2013-11-25 19:06:12

标签: typescript

我正在将我们的TypeScript项目移动到0.9.5,我不知道如何处理其中一个重大变化。

我有一个模式,其中一个函数可以将另一个函数作为输入。我不想对该输入函数的参数设置任何约束,但我确实想约束返回类型。我这样做了:

declare function meta(input: (... args: any[]) => boolean): void;

meta(function (x: number, y: number): boolean {
    return true;
});

meta(function (a: string): boolean {
    return false;
});

但这不再起作用了。我想出的最好的替代品是:

declare function meta(input: (x: any, y: any, z: any) => boolean): void;

meta(function (x: number, y: number): boolean {
    return true;
});

meta(function (a: string): boolean {
    return false;
});

这非常难看,它只能在input上包含我想要的参数。这只是感觉不对。有没有更好的方法来输入我的功能?

1 个答案:

答案 0 :(得分:2)

breaking changes page的建议更改如下......

declare function meta(input: (...args: any[]) => boolean): void;

meta(function (x?: number, y?: number): boolean {
    return true;
});

meta(function (a?: string): boolean {
    return false;
});