TypeScript严格类型的重要性

最近发现,使用TypeScript时,会出现一些“看代码没什么问题,但实际执行就会出错”的bug。经过调查后发现,这类bug主要原因就是实际执行时的类型和TypeScript标注的类型不一致。

例如:将Date类型转为json,再解析时,Date类型会变成字符串类型。而json类型是我手动用interface套的,TypeScript没法知道实际类型。之后,用这个字符串和另一个Date进行严格比较,导致判断结果始终为false,出现了bug。我对这类细节的掌握不到位,将会导致出现很多隐蔽且难以发现的错误,要调试半天才能发现。

类似的情况还有很多,例如我在mongoose的ObjectId和string类型标注时很随意,或者是框架本身导致的一些any类型,导致严格比较时出现恒为false的情况。

如何解决这个问题?关键是要对any类型保持极其谨慎的态度,对JavaScript的语法细节和边缘情况掌握的更加牢固,在数据传输时,使用unknown类型,通过TypeScript自身的类型推导缩小类型。比起后期用户反馈和艰难的调试,这些付出是划算的。

欢迎来到Yari的网站:yar2001 » TypeScript严格类型的重要性