TypeScript: заменить пространства имен чем-то другим - PullRequest
0 голосов
/ 18 мая 2018

TSLint жалуется, что пространства имен не должны использоваться, и, насколько я понимаю, здравый смысл заключается в том, что они больше не должны использоваться, поскольку они являются специальной конструкцией TypeScript.

Итак, у меня есть простая отметка времениинтерфейс:

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

Из-за отсутствия статических функций в интерфейсах я использую пространства имен для организации этой функциональности, например:

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

Как бы вы смоделировали это сейчас без пространства имен?Следующая конструкция выглядит некрасиво, есть ли другой способ?

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

1 Ответ

0 голосов
/ 18 мая 2018

Итак, я проверил lib.es6.d.ts, и похоже, что "const object" - действительно путь:

interface DateConstructor {
    ...
    now(): number;
    ...
}

declare const Date: DateConstructor;

Интересно, что следующая конструкция также работает, и я хотел бы рассмотретьчто как "чистый" подход:

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

export class Timestamp {
  public static now(): Timestamp {
    ...
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...