7个不使用TypeScript的理由,你认同吗?
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由一个国际委员会管理,未经共同体批准,任何事情都不会改变。
来源: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是一个很好的例子呢?
来源:Pexels
TypeScript的确有许多好用之处,但不是什么情况都适用,小芯也不是什么“杠精”,只是希望大家可以客观看待~
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
30亿人脸数据AI公司遭遇重大数据泄露,完整客户名单被盗
600多家执法机构使用的人脸识别应用程序Clearview AI遭遇重大数据泄露,完整客户名单在这次泄露中被盗。名单中的客户包括美国警方、执法机构和银行。 2月27日,Clearview AI公司向美国福克斯新闻网证实,有人获得了其所有客户的列表、客户使用的账户数量以及客户进行的搜索数量。据美国有线电视新闻网(CNN)消息,该入侵者没有获得客户的任何搜索记录。 Clearview AI的律师Tor Ekeland在一份声明中表示,安全是公司的首要任务,“不幸的是,数据泄露是生活的一部分。我们的服务器从未被访问过。”他补充说,该漏洞已得到修补,公司将继续加强安全程序。 据《纽约时报》2020年1月报道,Clearwater AI向至少600家美国执法机构提供了最新面部识别系统,其中涵盖从各大主流网站上抓取的30亿张图片数据。使用该系统,只需上传某个人的面部照片,就可以查看他在网上的公开照片,包括照片的地址链接。 Clearview AI由2007年移居美国的澳大利亚人Hoan Ton-That与前纽约市市长Rudy Giuliani的助手Richard Schwartz共同开发。公开资料...
- 下一篇
elasticsearch单机版安装及安装过程踩的坑整理
elasticsearch单机版安装及安装过程踩的坑整理 环境及版本 Linux版本:centos7.3 JDK版本:1.8 Elasticsearch版本: Linux用户:esuser 说明:因为es不能使用root用户安装,所以我们需要创建新用户:esuser. 本文中软件: 编辑 编辑 开始安装 1:创建es用户 useradd 用户名.如创建esuser这个用户:useradd esuser 编辑 给已经创建的用户设置密码,命令: passwd 密码。如给刚才创建esuser创建密码为123456.命令:passwd 123456 编辑 创建完成之后,需要重新设置密码。 上传es的安装包 2:Es下载: https://www.elastic.co/guide/en/elasticsearch/reference 需要注意:es7以后需要高版本的jdk或者openJDK 下图是es7对JDK版本的要求。 编辑 因为凯哥本地的JDK是1.8,所以不能使用ES7+的 凯哥使用ES6.8的。下图是6.8对JDK的要求。 编辑 6.8下载地址: 编辑 3:上传并解压 下载后,使用es...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用