【问题标题】:TypeScript: Substitute Namespaces with something elseTypeScript:用其他东西替换命名空间
【发布时间】:2018-10-28 14:22:48
【问题描述】:

TSLint 抱怨不应使用命名空间,据我所知,常识是不应再使用它们,因为它们是特殊的 TypeScript 构造。

所以,我有一个简单的时间戳接口:

export interface Timestamp {
  seconds: number | Long;
  nanos: number;
}

由于接口中缺少静态函数,我使用命名空间来组织该功能,如下所示:

export namespace Timestamp {
  export function now(): Timestamp {
    ...
  }
}

如果没有命名空间,您将如何建模?下面的构造看起来很难看,还有其他方法吗?

export const Timestamp = {
  now: () => {
    ...
  }
}

【问题讨论】:

    标签: typescript tslint javascript-namespaces


    【解决方案1】:

    所以,我检查了 lib.es6.d.ts,看起来“const 对象”确实是要走的路:

    interface DateConstructor {
        ...
        now(): number;
        ...
    }
    
    declare const Date: DateConstructor;
    

    有趣的是,以下构造也有效,我认为这是“干净”的方法:

    export interface Timestamp {
      seconds: number | Long;
      nanos: number;
    }
    
    export class Timestamp {
      public static now(): Timestamp {
        ...
      }
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多