typescript - Typescript 中私有构造函数和受保护构造函数的用途是什么
问题描述
我注意到在 Typescript 中,您可以将构造函数定义为带有任何访问修饰符(私有、受保护、公共)。有人可以举一个有效的例子来说明如何在 Typescript 中使用私有和受保护的构造函数吗?
示例这是 Typescript 中的有效代码:
class A
{
private constructor()
{
console.log("hello");
}
}
解决方案
就像在其他语言中一样,它的用法实际上是不允许任何人(类本身除外)实例化该类。例如,对于只有静态方法的类(Typescript 中很少见,因为有更简单的方法可以做到这一点),或者允许简单的单例实现,这可能很有用:
class A
{
private constructor()
{
console.log("hello");
}
private static _a :A
static get(): A{
return A._a || (A._a = new A())
}
}
或者需要使用工厂函数的特殊初始化要求。例如异步初始化:
class A
{
private constructor()
{
console.log("hello");
}
private init() :Promise<void>{}
static async create(): Promise<A>{
let a = new A()
await a.init();
return a;
}
}
推荐阅读
- python - 如何获取包含元数据的警报消息框
- javascript - Javascript 弹出警报 - 天数倒计时内部警报(7 - 0 天)
- javascript - 在比较函数中设置 sort_by
- android - 如何在 Kotlin 中将 Firestore 日期/时间戳转换为日期?
- c# - EF Core - 在 Where 中使用扩展方法
- python - 如何在 django 中获取动态日期?
- excel - 如何取消选择 Excel VBA 中的特定数据?
- ruby-on-rails - Img Kit 在 Rails 中创建多种图像尺寸
- vue-router - 错误:[vue-router] 路由配置中需要“路径”
- python - 如何遍历python中特定文件的所有导入?