写点什么

再见 CoffeeScript,你好 TypeScript

  • 2015-10-29
  • 本文字数:1029 字

    阅读完需:约 3 分钟

在网页应用的开发方面,CoffeeScript 曾经为广大程序员提供了很好的帮助。然而,微软公司推出的 TypeScript 正在超越 CoffeeScript 成为大家的首选。

作为一个在 2009 年出现的语言,CoffeeScript 目前已经十分成熟。它给为用户提供了很多的语法糖以及基于类的继承,却又保证了尽量简洁的语法。而且,其流行程度为团队之间的高效交流提供保证。然而,CoffeeScript 也存在一些很难解决的问题。Heap 的软件工程师 Jiawei Li 表示,CoffeeScript 至少存在三个方面的缺点。首先,CoffeeScript 中的变量初始化和重新赋值很容易出现混淆。由于变量不需要声明,在内层函数新定义的变量可能和已有的外部变量重名,造成程序执行混乱。其次,CoffeeScript 中强大的?操作符使得加大了阅读代码的难度。使用?来代替null/undefined的确可以简化代码,但编程人员却使得阅读代码变得困难。最后,CoffeeScript 模糊的语法定义使得编译后程序的行为无法掌控。以foo bar and hello world为例,其编译后的结果就可以是foo(bar) && hello(world)或者foo(bar && hello(world))

Jiawei 表示,企业目前对相关编程语言的核心关注点主要集中在两个方面——代码的易读性和易于快速开发。代码易读保证了调试工作可以高效进行;易于开速开发则保证了产品的发布时间。CoffeeScript 的缺点正好刺到了企业的痛点。因此,TypeScript 一经推出便迅速崛起。

TypeScript 的优点包括:支持可选的静态类型和基于类的面向对象编程、内置的类型注解保证了代码编译时的正确性、版本更新速度很快以及支持在第三方 JavaScript 中增加类型等。尽管 TypeScript 还存在不成熟的地方(如与 ES6 的兼容性方面),其特性很好的保证了大规模 JavaScript 应用开发的效率。未来,TypeScript 必然会有进一步更好的表现。

最后,Jiawei 也指出了一些 TypeScript 有待改进的地方。TypeScript 还欠缺模式匹配和隐式转换等语言特性。而且,针对变量的取值为 null 或者 undefined 的情况,TypeScript 还没不能很好的进行处理。JiaWei 建议,可以添加更多的类型机制来解决该问题。其中包括使用Options来决定是否允许变量为null/undefined、使用Trys来声明事情成功或失败以及使用FuturesPromises来声明异步操作成功或失败等。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-10-29 19:009007
用户头像

发布了 268 篇内容, 共 135.7 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

架构实战营10期-作业8

炮仗

易观:商业银行持续发力趣味营销活动,助力提升手机银行用户活跃度

易观分析

数字化 经济 手机银行

2023年最佳Aspera替代方案,选择适合的Aspera替代方案

镭速

Chrome插件:阿里云IoT设备证书三元组转化生成二维码——实践类

阿里云AIoT

小程序 开发者 物联网 Web App开发

云原生是什么?核心概念和应用方法解析

FinFish

小程序 云原生 小程序容器 小程序化 小程序技术

一起玩转开源数据库!OceanBase DevCon 之开源生态全景解析

OceanBase 数据库

数据库 oceanbase

志愿者招募令|来!一起Build OceanBase第一次开发者大会

OceanBase 数据库

数据库 oceanbase

微服务架构与小程序容器的结合:多领域应用的利器

FinFish

小程序 微服务架构 小程序容器 小程序化

今天,我想去一个平行世界

阿里云CloudImagine

云计算 云渲染

Apache Flink 入选 2022 年“科创中国”开源创新榜

Apache Flink

大数据 flink 实时计算

数据合规可信计划暨国内首个数据合规标准发布!易观作为标准起草单位应邀参加

易观分析

数据 数字化 信息化

分析视角下银行业数据平台架构演进及实现

酷克数据HashData

一文教你轻松创建数字孪生实例——实践类

阿里云AIoT

阿里云 物联网 IoT

重磅 | 超级自动化行业黑马九科信息再获数千万A+轮融资 ——电科信息领投,深创投索斯福跟投,老股东信天创投、青松基金追加投资

九科Ninetech

LeetCode题解:2363. 合并相似的物品,哈希表,详细注释

Lee Chen

JavaScript LeetCode

点维文化宣布通过百度智能云接入文心一言

极客天地

[译]Java web 应用和虚拟线程

followtry

Java spring 虚拟线程 loom

云原生架构如何落地实践

Onegun

微服务 云原生 小程序容器

“数字经济新引擎”筑牢中国智造基石

Openlab_cosmoplat

开源 物联网 数字化转型 工业 制造

IoT平台云端通用数据解析脚本实践——实践类

阿里云AIoT

小程序 监控 物联网 存储 数据采集

IoT物联网平台20条实用手册——实践类

阿里云AIoT

监控 物联网 消息中间件 数据格式 网络性能优化

索信达董事长吴辅世:忆Teradata中国创业岁月,看未来数据精神永流传

索信达控股

如何在阿里云上快速实现企业实例一键迁移——实践类

阿里云AIoT

阿里云 物联网 IoT

LeetCode题解:2363. 合并相似的物品,双指针,详细注释

Lee Chen

JavaScript LeetCode

混合式App开发模式下的热更新技术方案,你知道多少?

没有用户名丶

小程序容器

在线文本翻译能力新增14个直译模型,打造以中文为轴心语言的翻译系统

HarmonyOS SDK

顶会论文 | 阿里云视频摘要SOTA模型:用于视频摘要的多层时空网络

阿里技术

人工智能

FLstudio2023水果编曲软件下载及中文语言切换教程

茶色酒

FLstudio2023

工业元宇宙:智能制造的未来形态

Openlab_cosmoplat

开源 工业 制造 区块链、 元宇宙

IoT设备模拟器小程序使用手册——实践类

阿里云AIoT

小程序 开发者 监控 物联网 传感器

再见CoffeeScript,你好TypeScript_JavaScript_张天雷_InfoQ精选文章