tslint - TypeScript: Înlocuiește namespace-urile cu altceva


TSLint se plânge că spațiile de nume nu ar trebui folosite și, din câte înțeleg, bunul simț este că nu ar trebui folosite mai mult deoarece sunt un construct special TypeScript.

Așadar, am o interfață simplă Timestamp:

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

Datorită lipsei funcțiilor statice în interfețe, folosesc namespace-uri pentru a organiza acea funcționalitate, astfel:

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

Cum ai modela asta acum fără un namespace? Următoarea construcție arată urât, există o altă cale?

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

Răspuns #1

Deci, am verificat lib.es6.d.ts și se pare că un „obiect const” este cu adevărat calea de urmat:

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

declare const Date: DateConstructor;

Interesant, următoarea construcție funcționează de asemenea și aș considera asta ca abordarea „curată”:

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

export class Timestamp {
  public static now(): Timestamp {
    ...
  }
}