在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

再见 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:009099
用户头像

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

关注

评论

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

基础SQL的实现

卢卡多多

7月日更

Redis - Cluster - gossip&故障转移

旺仔大菜包

redis cluster

IPFS/Filecoin项目的未来趋势怎么样?投资Filecoin挖矿有风险吗?

IPFS fil币 ipfs挖矿 fil挖矿 fil矿机

Alibaba全新出品JDK源码学习指南,面面俱到,没有一句废话

Java 编程 架构 面试

养牛达人APP系统开发资料

Mysql,RedisCluster,Kafka,Mongo笔记分享

鲁米

安装

Kubernetes-技术专题-Spring Boot 2.0和 Docker 的微服务快速指南

码界西柚

容器 k8s 7月日更

又快又全的云IT资源运维软件重点推荐-行云管家!

行云管家

云管平台 云资源 IT资源 IT运维

ATS挖矿系统开发案例

市值管理机器人开发,搭建量化交易机器人

Geek_23f0c3

机器人 市值管理机器人开发 #区块链# 量化机器人

数据中台发展史

escray

学习 极客时间 7月日更 数据中台实战课

英特尔在异构计算前加了一个“超”字,凭什么?

E科讯

芒果微视系统软件开发内容

《持之以恒的从事运动》八

Changing Lin

前端通讯协议大比拼:WebSockets和HTTP

devpoint

HTTP websocket HTTP2.0 7月日更

傻眼了,我粗略造了一个命令执行的绕过方法居然被同事嫖走了

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞分析

“此苹果非彼苹果”看意图识别的那些事儿

百度大脑

人工智能 飞桨 数据抽取

hdfs namenode的故障恢复

五分钟学大数据

hdfs 7月日更

VGC算力挖矿APP系统开发

获客I3O6O643Z97

挖矿 #区块链# PHA质押挖矿

Filecoin矿机挖矿APP系统开发

获客I3O6O643Z97

区块链+ 云算力挖矿源码 fil挖矿 fil矿机

推荐大家一个阅读全球计算机论文的好RP

奔着腾讯去

网络攻防学习笔记 Day75

穿过生命散发芬芳

网络攻防 7月日更

Ansible Playbook - 03

耳东@Erdong

ansible 7月日更 ansible Playbook

Pomo币挖矿APP系统开发介绍

模块二作业

江南巴飞特

你也许连删库跑路都不会

喵叔

7月日更

并发操作详解:Goroutines 和 Channels 的声明与使用

微客鸟窝

Go 语言 go并发

《淘宝技术这十年》读后总结

淘宝架构 淘宝技术这十年

在线医疗不容错过

anyRTC开发者

音视频 WebRTC 实时通讯 在线医疗

爱尚拼购系统软件开发搭建

疯了吧!这帮人居然用 Go 写“前端”?(二)

尔达Erda

开源 云原生 大前端 PaaS Go 语言

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