当前位置: 首页 > 科技观察

不使用TypeScript的7个理由,你同意吗?

时间:2023-03-12 19:18:59 科技观察

TypeScript很流行。因为它“解决”了JS的很多问题,是JS的“超集”。它不仅可以轻松发现代码中的错误,还可以使其易于阅读。是的,是的,使用TypeScript的原因有很多。相反,今天小新就来说说不使用TypeScript的7个理由。1.它不解决问题据说TypeScript可以解决JavaScript的问题,其实并没有。动态类型在JavaScript中从来都不是问题,但是还有很多其他的,比如NaN===NaN是假的,分号是可选的或非可选的,换行符将对象定义更改为范围,语法糖而不是OOP等等,它确实是一个问题。TypeScript并没有解决这些问题,而是引入了另一个标准,进一步分化了JS社区。即使假设JS中缺少类型是个问题,TS也不会修复它。你知道什么语言可以解决吗?Java、C、C#等编译型语言都可以。它们可以在编译和运行时安全地保证强类型。翻译语言就是做不到这一点。2、虽然开源,但TypeScript的使用非常有限开源的原因有很多。没错,TS编译器是在MIT许可证下发布的。但它仍然由微软(MSFT)控制,这是一个巨大的垄断企业,其在开源技术方面的进步只不过是一种营销策略。不要把开源和民主混为一谈:微软仍然可以用TS为所欲为,你来看看。另一方面,JS由一个国际委员会管理,未经社区批准,任何事情都不会改变。资料来源:Pexels3。危险那么如果TypeScript在编译时添加类型定义和检查会有什么风险呢?IDE集成会警告您任何类型不匹配?正因为如此,TypeScript只在编译时检查类型,而且只检查可用的类型。任何网络调用、系统库、特定于平台的API和未类型化的第三方库都无法与TypeScript通信。当您习惯于检查类型而不必完全理解代码和平台时,就会出现错误和错误。使用JS,不对类型做出任何假设,而是检查变量的具体值以确保它符合预期。或者,如果您在这种特殊情况下不关心它的类型,则无需检查。在TS中,你依靠编译器来做这件事,但它只能检查这么多。您可以将这两种方法结合起来,但这有什么意义呢?如果您花时间编写定义,然后编写代码以确保这些定义在运行时得到维护,您为什么首先要选择它们?4.MessAnotherParadox底线:一种本应为代码库增加清晰度和可读性的语言却使它变得晦涩难懂。为了说明我的意思,请看下面有效开源库中的一些示例://TODO:dothismoreelegantly;((currentReduceraasunknown)asReducer)=nextReducerviewrawcreateStore.tshostedwith?byGitHub此行来自Redux库,所有这4行所做的就是将nextReducer分配给currentReducer。//HACK:SinceTypeScriptinheritsstaticpropertiestoo,wehaveto//fightagainstTypeScriptheresoSubjectcanhaveadifferentstaticcreatesignature/***CreatesanewcoldObservablebycallingtheObservableconstructor*@statictrue*@ownerObservable*@methodcreate*@param{Function}subscribe?thesubscriberfunctiontobepassedtotheObservableconstructor*@return{Observable}anewcoldobservable*@nocollapse*@deprecatedusenewObservable()instead*/staticcreate:Function=(subscribe?:(subscriber:Subscriber)=>TeardownLogic)=>{returnnewObservable(subscribe);}viewrawObservable.tshostedwith?byGitHub下一个例子来自RxJS库。我不了解你,但如果我正在与一个应该帮助我的工具作斗争,我认为它不是一个好工具。5.不是超集,而是子集TypeScript是一种编译为JavaScript的语言,根据定义,JavaScript不能是超集。它限制了您可以使用JavaScript执行的操作并掩盖了其强大的一面,同时提供虚假的安心。如果你真的想成为一名优秀的开发人员,不要沉迷于安逸的谎言,试着去理解JavaScript的真正力量和它的灵活性。6.功能多了……这个理由不成立了。诚然,当TS在2012年首次推出时,它具有类等功能,但在JS中仍然不可用。但是从那时起JS已经走了很长一段路,现在TS正在努力跟上。如果JS中缺少任何内容,则需要一个babel插件来完成。7.大公司接手……我不敢相信有人会认为这是一个原因。大公司还使用遗留代码库、进行税务欺诈并歧视女性。为什么他们突然使用TypeScript是一个很好的例子?来源:PexelsTypeScript确实有很多好用的特性,但并不是适用于所有情况,小新也不是什么“聪明人”,只是希望大家客观看待~