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

Posted

技术标签:

【中文标题】TypeScript:用其他东西替换命名空间【英文标题】:TypeScript: Substitute Namespaces with something else 【发布时间】:2018-10-28 14:22:48 【问题描述】:

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

所以,我有一个简单的时间戳接口:

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

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

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

如果没有命名空间,您将如何建模?下面的构造看起来很难看,还有其他方法吗?

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

【问题讨论】:

【参考方案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 
    ...
  

【讨论】:

如需更明智的回答:***.com/questions/50415859/…

以上是关于TypeScript:用其他东西替换命名空间的主要内容,如果未能解决你的问题,请参考以下文章

Java SoapMessage 添加空命名空间

《菜鸟教程》-TypeScript 命名空间

LayaBox---TypeScript---命名空间和模块

关于TypeScript命名空间

TypeScript躬行记——命名空间

TypeScript:如何在命名空间中使用内部接口