【问题标题】:Can I overload function on constant of Number type?我可以在 Number 类型的常量上重载函数吗?
【发布时间】:2014-09-04 17:15:00
【问题描述】:

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类型的常量上重载函数是真的吗?

【问题讨论】:

    标签: numbers typescript overloading


    【解决方案1】:

    在您提出问题后很长一段时间后才添加了执行此操作的功能,但谁知道呢?您可能仍在尝试编写该应用程序。

    截至 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);
    

    【讨论】:

      【解决方案2】:

      TypeScript 语言不支持此功能。

      【讨论】:

        猜你喜欢
        • 2014-01-09
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        • 2023-01-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多