TypeScript:用其他东西替换命名空间
TypeScript: Substitute Namespaces with something else
TSLint 抱怨不应该使用命名空间,据我所知,常识是不应该再使用它们,因为它们是特殊的 TypeScript 构造。
所以,我有一个简单的时间戳接口:
export interface Timestamp {
seconds: number | Long;
nanos: number;
}
由于接口中缺少静态函数,我使用名称空间来组织该功能,如下所示:
export namespace Timestamp {
export function now(): Timestamp {
...
}
}
如果没有名称空间,您将如何建模?下面的构造看起来很丑,还有别的方法吗?
export const Timestamp = {
now: () => {
...
}
}
所以,我检查了 lib.es6.d.ts,看起来 "const object" 确实是可行的方法:
interface DateConstructor {
...
now(): number;
...
}
declare const Date: DateConstructor;
有趣的是,以下构造也有效,我认为这是 "clean" 方法:
export interface Timestamp {
seconds: number | Long;
nanos: number;
}
export class Timestamp {
public static now(): Timestamp {
...
}
}
TSLint 抱怨不应该使用命名空间,据我所知,常识是不应该再使用它们,因为它们是特殊的 TypeScript 构造。
所以,我有一个简单的时间戳接口:
export interface Timestamp {
seconds: number | Long;
nanos: number;
}
由于接口中缺少静态函数,我使用名称空间来组织该功能,如下所示:
export namespace Timestamp {
export function now(): Timestamp {
...
}
}
如果没有名称空间,您将如何建模?下面的构造看起来很丑,还有别的方法吗?
export const Timestamp = {
now: () => {
...
}
}
所以,我检查了 lib.es6.d.ts,看起来 "const object" 确实是可行的方法:
interface DateConstructor {
...
now(): number;
...
}
declare const Date: DateConstructor;
有趣的是,以下构造也有效,我认为这是 "clean" 方法:
export interface Timestamp {
seconds: number | Long;
nanos: number;
}
export class Timestamp {
public static now(): Timestamp {
...
}
}