TypeScript:用其他东西替换命名空间

时间:2018-05-18 07:46:38

标签: typescript tslint javascript-namespaces

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

所以,我有一个简单的Timestamp接口:

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

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

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

如果没有命名空间,你会如何建模?以下构造看起来很难看,有另一种方式吗?

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

1 个答案:

答案 0 :(得分:-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 {
    ...
  }
}