TypeScript:使用泛型和联合类型

时间:2015-03-30 20:26:45

标签: typescript1.4

我有使用函数重载的代码,例如:

function f0(v: Object): void { }

function f1(a: number, b: number): void;
function f1(a: string, b: string): void;
function f1(a: any, b: any): void {
    f0(a); // OK
}

我想使用union类型转换,但是我收到错误:

function f1<T extends number | string>(a: T, b: T): void {
    f0(a); // Error: Argument of type 'T' is not assignable to parameter of type 'Object'.
}

这里有什么不对,知道以下情况可以:

function f2(v: number | string) {
    f0(v);
}
function f3<T extends number>(v: T) {
    f0(v);
}
function f4<T extends string>(v: T) {
    f0(v);
}

1 个答案:

答案 0 :(得分:1)

我终于向MS询问,这似乎是一个错误:https://github.com/Microsoft/TypeScript/issues/2576