java - Typescript 中的工厂模式并仅公开工厂类

标签 java node.js typescript factory

我正在使用工厂模式在 typescript 中开发一个 Node 模块,我只想公开工厂类和接口(interface)。

结构:

iexp.ts

export interface IExp { 
    methodX(); 
}

A.ts

class A implements IExp {
}

B.ts

class B implements IExp {
}

工厂.ts

export class ExpFactory {
    createInstance(type:string) : IExp{
      if(type=="A") return new A();
      else return new B();
    }
}

所有类和接口(interface)都在它们自己的源文件中。我不想暴露 A 类和 B 类,所以我没有使用 export 但我也无法在 ExpFactory 类中使​​用它们。在 Java 中,类可以具有包范围,但我如何在 typescript 中做同样的事情?

最佳答案

您可以使用 ExpFactory 中的 AB(如果它们位于同一文件中)。如果没有,那么您必须从模块中导出它们,要么全部要么全无(只能是公共(public)的)。

但是,这并不能让它们从模块外部轻松访问。如果您要捆绑库,则入口点必须再次导出类,否则将无法在模块外部访问它们。如果您不捆绑,用户将必须找出相对路径并直接从中导入。

关于java - Typescript 中的工厂模式并仅公开工厂类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39494673/

相关文章:

node.js - 重新组装分段上传中生成的文件 block

javascript - AngularJS 与 TypeScript 未捕获错误 : [$injector:modulerr]

javascript - 无法在vue中使用 typescript

node.js - 使用 TypeScript 中的类型导入 Node 和表达

java - java中的SPARQL查询REGEX边界返回空

javascript - 当前请求不是 [org.springframework.web.multipart.MultipartHttpServletRequest] 类型

javascript - Knex.js 与 Joi 绑定(bind)

java - 代理对 char[] 上的 System.out.println() 行为

java - 在 Java 中处理键盘中断

javascript - 回调混淆fs模块