欢迎光临散文网 会员登陆 & 注册

TypeScript之类型安全&工厂模式

2023-08-28 20:34 作者:惠晴GD  | 我要投稿

TypeScript之类型安全

TypeScript之类型安全

TypeScript之类型安全

首先,讲一下TS是如何去判断两个类型是不同的。TS中使用的是鸭子效应

具体是这么描述的,一个动物如果他会游泳,能发出鸭子的声音。那么它就可以说是一只鸭子。

比如会游泳,会发出鸭子声的人类实例,也可以叫做为鸭子。

这种情况下,猫和狗是一致的。

当然这样是存在着相当大的风险的,因为当你接受的参数希望是一只猫的时候。你接收了一条狗都不知道。

所以,TS中用另外一种方式去实现。完全的类型隔离

首先1unique symbol来实现限定,然后2再在class中使用这个unique symbol

为了更加方便的使用,会给它们加上get和set

综上就是TS中完全实现,类型分割的方式。这种class的方式是相当的稳妥。相当于创造出了新的一种类型。

在后面的使用中,它也会屏蔽掉TS的鸭子类型

但是即使这样,这里还是可能会有Bug。Bug出现在new的时候。问自己一个问题,有没有-1块。没有吧,所以,我们应该限制这种错误发生

(1)首先,遇到这种情况的时候,我们会想到在construct中做文章。比如这样

面对输入的Number的时候,new的结果要不是successful,要不就抛出异常。实际上这样子相当的不好。new应该就是new,就正常的赋值实际上就很不错,而不是还要判断啥的。而且正常情况下,我们应该返回undefined/null而不是抛出异常

这时候,我们就要用到工厂模式了,或者说工厂模式的真正初衷是这个。

(1)我们先给constructor加上private限制符,这样子就只能用工厂模式中的方法去构造了。

这样一个合格的原创类型的实现完成了。

当然,这里面的工厂模式并不是为了让你死记硬背,而是要理解工厂模式的初衷是为了给new的输入数值进行排雷。


2023-8-28   惠晴_GD




TypeScript之类型安全&工厂模式的评论 (共 条)

分享到微博请遵守国家法律