TypeScript之類型安全&工廠模式
TypeScript之類型安全
TypeScript之類型安全
TypeScript之類型安全
首先,講一下TS是如何去判斷兩個類型是不同的。TS中使用的是鴨子效應。
具體是這么描述的,一個動物如果他會游泳,能發(fā)出鴨子的聲音。那么它就可以說是一只鴨子。
比如會游泳,會發(fā)出鴨子聲的人類實例,也可以叫做為鴨子。

當然這樣是存在著相當大的風險的,因為當你接受的參數(shù)希望是一只貓的時候。你接收了一條狗都不知道。
所以,TS中用另外一種方式去實現(xiàn)。完全的類型隔離

首先1用unique symbol來實現(xiàn)限定,然后2再在class中使用這個unique symbol

綜上就是TS中完全實現(xiàn),類型分割的方式。這種class的方式是相當?shù)姆€(wěn)妥。相當于創(chuàng)造出了新的一種類型。

但是即使這樣,這里還是可能會有Bug。Bug出現(xiàn)在new的時候。問自己一個問題,有沒有-1塊。沒有吧,所以,我們應該限制這種錯誤發(fā)生
(1)首先,遇到這種情況的時候,我們會想到在construct中做文章。比如這樣

面對輸入的Number的時候,new的結果要不是successful,要不就拋出異常。實際上這樣子相當?shù)牟缓?。new應該就是new,就正常的賦值實際上就很不錯,而不是還要判斷啥的。而且正常情況下,我們應該返回undefined/null而不是拋出異常
這時候,我們就要用到工廠模式了,或者說工廠模式的真正初衷是這個。

(1)我們先給constructor加上private限制符,這樣子就只能用工廠模式中的方法去構造了。

這樣一個合格的原創(chuàng)類型的實現(xiàn)完成了。
當然,這里面的工廠模式并不是為了讓你死記硬背,而是要理解工廠模式的初衷是為了給new的輸入數(shù)值進行排雷。
2023-8-28? ?惠晴_GD