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

Posted 读芯术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7个不使用TypeScript的理由,你认同吗?相关的知识,希望对你有一定的参考价值。







全文共2550字,预计学习时长8分钟

7个不使用TypeScript的理由,你认同吗?
来源:Pexels

TypeScript很受大众喜爱。 因为它“解决”了JS的许多问题,是JS的“超集”。 它不仅能轻松找出代码错误,还能使其易于阅读。
 
对,没错,使用TypeScript的理由太多了。
 
反其道而行之,今天小芯就要说7个不使用TypeScript的理由。
 
1、它不能解决问题
 
据说TypeScript可以解决javascript的问题,但事实并非如此。 动态类型在JavaScript中从来都不是问题,但是许多其他问题,例如NaN===NaN为false、分号为可选或非可选、换行符将对象定义更改为作用域、语法糖代替OOP等,确实是问题。 TypeScript并没有解决这些问题,但是引入了另一个标准,进一步分化了JS社区。
 
即使假设JS中缺少类型是一个问题,TS也不能解决这个问题。 你知道什么语言可以解决吗? Java、C、C#等编译语言可以。 它们可以在编译和运行时安全地保证强类型。 翻译语言就是不能做到这一点。
 
2、虽然开源,但很局限
 
使用TypeScript的许多原因表明它是开源的。 没错,TS编译器是在MIT许可下发布的。 但它仍由微软(Microsoft)控制,微软是一家垄断性的大公司,其开源技术的进步不过是一种营销手段。 不要把开源和民主混为一谈: 微软仍然可以用TS做任何你想做的事情,你只是来看看。 另一方面,JS由一个国际委员会管理,未经共同体批准,任何事情都不会改变。
 
7个不使用TypeScript的理由,你认同吗?
来源:Pexels

3、危险
 
所以,如果TypeScript添加类型定义并在编译时进行检查,会有什么风险呢? 以及IDE集成将警告你任何类型不匹配?
 
正因为如此,TypeScript只在编译时检查类型,并且只检查可用的类型。 任何网络调用、系统库、特定于平台的API和非类型化的第三方库都无法与TypeScript通信。 当你习惯于检查类型,而不必完全理解代码和平台时,就会出现错误和bug。
 
使用JS,对类型没有任何假设,并且检查变量的具体值,以确保它符合期望。 或者,如果你不关心它在这种特殊情况下的类型,就无需检查。 在TS中,你依赖编译器执行此操作,但它只能检查这么多。 你可以把这两种方法结合起来,但那又有什么意义呢? 如果花时间编写定义,然后再编写代码以确保运行期间维护这些定义,那么为什么首先要选用它们呢?
 
4、凌乱
 
另一个悖论是: 本应为代码库增加清晰性和可读性的语言反而令其晦涩难懂。 为了展示我的意思,请看以下在有效开源库中找到的一些示例:
 
  
    
    
  
// TODO: dothismoreelegantly ;((currentReducerasunknown) asReducer< NewState, NewActions >) =nextReducer
viewrawcreateStore.ts  hostedwith❤by  GitHub

这一行来自 Redux 库,这 4 行所做的就是将 nextReducer 分配给 currentReducer
 
  
    
    
  
// HACK: SinceTypeScriptinheritsstaticpropertiestoo, wehaveto // fightagainstTypeScriptheresoSubjectcanhaveadifferentstaticcreatesignature /** * CreatesanewcoldObservablebycallingtheObservableconstructor * @statictrue * @ownerObservable * @methodcreate * @param {Function} subscribe? thesubscriberfunctiontobepassedtotheObservableconstructor * @return {Observable} anewcoldobservable * @nocollapse * @deprecatedusenewObservable() instead */ staticcreate: Function= <T>(subscribe?: (subscriber: Subscriber<T>) =>TeardownLogic) => { returnnewObservable<T>(subscribe); }
viewrawObservable.ts  hostedwith❤by  GitHub

下一个例子来自RxJS库。
我不知道你的情况,但如果我要和一个应该帮助我的工具战斗,我认为这不是一个好工具。
 
5、不是超集,而是子集
 
TypeScript是编译成JavaScript的语言,根据定义它不能是超集。 它限制了使用JavaScript所能做的事情,并且在提供虚假的内心平静的同时掩盖了JavaScript强大的一面。 如果你真的想成为一个伟大的开发者,不要沉溺于一个安慰的谎言,试着去理解JavaScript的真正力量和它的灵活性。
 
6、有更多的特点…
 
这个原因已经不再成立。 诚然,当TS 在2012年首次引入 时,它具有类等特性,但在JS中仍然不可用。 但是JS从那时起已经走了很长的路,现在TS正在努力跟上。 如果JS中缺少任何东西,那么就需要一个babel插件来完成。
 
7、大公司会选择它…
 
我不敢相信有人会认为这是一个原因。 大公司也使用遗留的代码库,进行税务欺诈,歧视妇女。 为什么他们突然使用TypeScript是一个很好的例子呢?
 
7个不使用TypeScript的理由,你认同吗?
来源:Pexels

TypeScript的确有许多好用之处,但不是什么情况都适用,小芯也不是什么“杠精”,只是希望大家可以客观看待~
 
欢迎大家积极发表意见,在评论区留言哟~

7个不使用TypeScript的理由,你认同吗?
推荐阅读专题


留言点赞发个朋友圈
我们一起分享AI学习与发展的干货

编译组: 马唯一、胡昕彤
相关链接:
https://medium.com/javascript-in-plain-english/7-really-good-reasons-not-to-use-typescript-166af597c466


如转载,请后台留言,遵守转载规范

推荐文章阅读


长按识别二维码可添加关注
读芯君爱你

以上是关于7个不使用TypeScript的理由,你认同吗?的主要内容,如果未能解决你的问题,请参考以下文章

机器学习项目失败最大的原因的有这7种,你认同吗?

7个拒绝使用TypeScript的借口

别骗自己了,你不用TypeScript的理由站不住脚

这个设计原则,你认同吗?

MySQL 5.7开始支持JSON,那还有必要使用MongoDB存JSON吗?请列出你的观点/理由。

“人,过度倾诉,会遭人嫌弃的”你认同这句话吗,为什么?