我可以在Number类型的常量上重载函数吗?

时间:2014-09-04 17:15:00

标签: numbers typescript overloading

TypeScript允许在String类型的常量上重载函数。

getElementsByTagName(name: "video"): NodeListOf<HTMLVideoElement>;
getElementsByTagName(name: "track"): NodeListOf<HTMLTrackElement>;
getElementsByTagName(name: string ): NodeList;

但是这段代码会导致解析器错误:

getElementsByTagName(name: 1     ): NodeListOf<HTMLVideoElement>;
getElementsByTagName(name: 2     ): NodeListOf<HTMLElement>;
getElementsByTagName(name: number): NodeList;

在Number类型的常量上重载函数是真的吗?

2 个答案:

答案 0 :(得分:0)

TypeScript语言不支持此功能。

答案 1 :(得分:0)

在你提出这个问题之后,这种能力增加了很长一段时间,但谁知道呢?您可能仍在尝试编写该应用程序。

您可以在2018年的TypeScript中执行以下操作.Ryan可能参与使其成为可能......所以不要对他的回答很难,这在2014年是正确的。

function doSomething(n: 1): number[];
function doSomething(n: 2): string[];
function doSomething(n: 3): boolean[];
function doSomething(n: number): (number[] | string[] | boolean[]) {
    switch (n) {
        case 1:
            return [1, 2, 3];
        case 2:
            return ['a', 'b', 'c'];
        case 3:
            return [true, false, true];
    }
}

// number[]
const arr1 = doSomething(1);

// string[]
const arr2 = doSomething(2);

// boolean[]
const arr3 = doSomething(3);