7个不使用TypeScript的理由,你认同吗?
云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!
TypeScript很受大众喜爱。因为它“解决”了JS的许多问题,是JS的“超集”。它不仅能轻松找出代码错误,还能使其易于阅读。
对,没错,使用TypeScript的理由太多了。
反其道而行之,今天小芯就要说7个不使用TypeScript的理由。
它不能解决问题
据说TypeScript可以解决JavaScript的问题,但事实并非如此。动态类型在JavaScript中从来都不是问题,但是许多其他问题,例如NaN===NaN为false、分号为可选或非可选、换行符将对象定义更改为作用域、语法糖代替OOP等,确实是问题。TypeScript并没有解决这些问题,但是引入了另一个标准,进一步分化了JS社区。
即使假设JS中缺少类型是一个问题,TS也不能解决这个问题。你知道什么语言可以解决吗?Java、C、C#等编译语言可以。它们可以在编译和运行时安全地保证强类型。翻译语言就是不能做到这一点。
危险
所以,如果TypeScript添加类型定义并在编译时进行检查,会有什么风险呢?以及IDE集成将警告你任何类型不匹配?
正因为如此,TypeScript只在编译时检查类型,并且只检查可用的类型。任何网络调用、系统库、特定于平台的API和非类型化的第三方库都无法与TypeScript通信。当你习惯于检查类型,而不必完全理解代码和平台时,就会出现错误和bug。
使用JS,对类型没有任何假设,并且检查变量的具体值,以确保它符合期望。或者,如果你不关心它在这种特殊情况下的类型,就无需检查。在TS中,你依赖编译器执行此操作,但它只能检查这么多。你可以把这两种方法结合起来,但那又有什么意义呢?如果花时间编写定义,然后再编写代码以确保运行期间维护这些定义,那么为什么首先要选用它们呢?
凌乱
另一个悖论是:本应为代码库增加清晰性和可读性的语言反而令其晦涩难懂。为了展示我的意思,请看以下在有效开源库中找到的一些示例:
// 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库。我不知道你的情况,但如果我要和一个应该帮助我的工具战斗,我认为这不是一个好工具。
不是超集,而是子集
TypeScript是编译成JavaScript的语言,根据定义它不能是超集。它限制了使用JavaScript所能做的事情,并且在提供虚假的内心平静的同时掩盖了JavaScript强大的一面。如果你真的想成为一个伟大的开发者,不要沉溺于一个安慰的谎言,试着去理解JavaScript的真正力量和它的灵活性。
有更多的特点…
这个原因已经不再成立。诚然,当TS在2012年首次引入时,它具有类等特性,但在JS中仍然不可用。但是JS从那时起已经走了很长的路,现在TS正在努力跟上。如果JS中缺少任何东西,那么就需要一个babel插件来完成。
大公司会选择它…
我不敢相信有人会认为这是一个原因。大公司也使用遗留的代码库,进行税务欺诈,歧视妇女。为什么他们突然使用TypeScript是一个很好的例子呢?
TypeScript的确有许多好用之处,但不是什么情况都适用,小芯也不是什么“杠精”,只是希望大家可以客观看待~
云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
手把手,教你如何逐步提高JavaScript的编码能力?
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 今天,小芯给大家分享一些提高JavaScript编码能力的应用方法,学习并运用到实践中,你也可以成为编码熟练工哟~ 编辑器 目前,编辑器种类繁多,人们不知道选择哪种编辑器来提高工作效率。 于我而言,除了使用Android Studio或使用Xcode的iOS所需的Android代码外,我大多只使用Visual Studio Code。 这是由Microsoft开发的编辑器。这是Microsoft开发的,听起来不错!!!几乎支持所有语言,无数附加插件,AI代码建议,漂亮的界面和浅色调(不是Sublime Text,但…仍然是浅色?) 过去,我只使用Sublime Text(当时不流行VSCode)。大量的插件(将在下文讨论)为我节省了很多时间,例如自动检测并修复错误,格式代码,git镜头,终端等……,因为不再需要解决编码时常见的小错误。 如果编写PHP,一定会喜欢PHPStorm。如果编写Python,则一定会喜欢PyCharm。毋庸...
- 下一篇
3个很棒的小众JavaScript库,你值得拥有!
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! JavaScript有很多库,每个人都已经对最重要和最受欢迎的库做过总结,但很快再次迷失。 在本文中,小芯将分享3个鲜为人知但非常强大,且很小的JavaScript库,这些库将使你的生活变得简单,也不会给你的web应用程序增加不必要的负担。 1、JS-cookie OfficialGitHub 在浏览器中使用cookies可能会非常费力。JS cookies让这件事变得简单多了,现在我们将学习基本知识。 通过CDN实施: <script src="https://cdn.jsdelivr.net/npm/js-cookie@beta/dist/js.cookie.min.js"></script> 设置一个名为“name”的cookie键,其值为“Max” Cookies.set(‘name’, ‘Max’) 获取密钥为“name”的cookie值 Cookies.get(‘name’) // 'Max' 创建...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS关闭SELinux安全模块
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度