tslint - TypeScript: Ersätt namnrymder med något annat
TSLint klagar på att namespace inte borde användas och så vitt jag förstår är den allmänna uppfattningen att de inte borde användas längre eftersom de är ett speciellt TypeScript-konstrukt.
Så, jag har ett enkelt Tidsstämpelgränssnitt:
export interface Timestamp {
seconds: number | Long;
nanos: number;
}
På grund av bristen på statiska funktioner i gränssnitt använder jag namnrymder för att organisera den funktionaliteten, på detta sätt:
export namespace Timestamp {
export function now(): Timestamp {
...
}
}
Hur skulle du modellera det nu utan ett namespace? Följande konstruktion ser ful ut, finns det ett annat sätt?
export const Timestamp = {
now: () => {
...
}
}
Svar #1
Så, jag kollade lib.es6.d.ts och det verkar som att ett "const-objekt" verkligen är vägen att gå:
interface DateConstructor {
...
now(): number;
...
}
declare const Date: DateConstructor;
Intressant nog fungerar även följande konstruktion och jag skulle betrakta det som det "rena" tillvägagångssättet:
export interface Timestamp {
seconds: number | Long;
nanos: number;
}
export class Timestamp {
public static now(): Timestamp {
...
}
}
