gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:30:12 27 4
gpt4 key购买 nike

我正在使用工厂模式在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com