javascript - TypeScript 中的嵌套类抛出错误

标签 javascript typescript oop namespaces

我正在按照 official TypeScript handbook under the section "Merging Namespaces with Classes" 中的说明进行操作有关如何获取嵌套类的信息。但是看起来如果我尝试在子类定义中添加任何类型的函数声明,我会得到 TS 错误

"An accessor cannot be declared in an ambient context"

我不知道这意味着什么,也不知道为什么我在完全按照我所知道的示例进行操作时会得到这个。

export class Schedule {
    // ...
}

export declare namespace Schedule {
    export class MaxGracePeriod {
        // Static, read-only constants in TypeScript (See: https://stackoverflow.com/a/22993349/1504964)
        public static get Hourly(): number { return 12; }
        public static get Daily(): number { return 12; }
        public static get Weekly(): number { return 12; }
        public static get Monthly(): number { return 24; }
        public static get Yearly(): number { return 24; }       
        //                ~~~~~~ => "An accessor cannot be declared in an ambient context"
    }

    export enum DaysOfWeek {
        Sunday = 0,
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6,
    }
}

Hourly()Daily() 等定义出现红色波浪线和错误。

最佳答案

从命名空间定义中删除declare。你不需要那个。

export class Schedule {
    // ...
}

export namespace Schedule {
    export class MaxGracePeriod {
        public static get Hourly(): number { return 12; }
        public static get Daily(): number { return 12; }
        public static get Weekly(): number { return 12; }
        public static get Monthly(): number { return 24; }
        public static get Yearly(): number { return 24; }       
    }

    export enum DaysOfWeek {
        Sunday = 0,
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6,
    }
}

关于javascript - TypeScript 中的嵌套类抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48627788/

相关文章:

javascript - 我如何避免在 JavaScript 中首先使用 parseFloat/Int, number()?

typescript - 为什么类型保护类型的差价会导致类型检查被跳过?

Javascript OOP 帮助/建议/解释

c++ - Arduino类初始化执行

javascript - Angular Promise 和两种方法

javascript - 动态更改 SAP Fiori 标题时出现 "this.getService is not a function"

javascript - 谷歌地图拖动矩形来选择标记

angular - 调用服务 angular2 错误 'Property ' 然后'在类型 'Subscription' 上不存在

javascript - 将 Stackblitz HelloComponent 转变为 Web 组件?

c++ - 赋值运算符重载