写点什么

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

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

关注

评论

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

借助Databuff,快捷构建Kubernetes可观测能力

乘云数字DataBuff

语音数据标注平台让语音识别技术更精准

数据堂

打翻夏日调色盘,华为与你多巴胺一“夏”

最新动态

语音标注平台是构建智能语音技术的重要基石

数据堂

NFTScan 与 Purelist 达成战略合作伙伴,双方在 NFT 一级发售方面展开合作

NFT Research

NFT\ 市场

与用户“同频”,海尔空调带来行业第三次科技革命

脑极体

绿色 空调

使用可视化低代码工具提高开发效率

互联网工科生

低代码 可视化开发 JNPF

异步 I/O 探秘 —— 为什么说 Go 为我们提供了同步的网络编程接口 ?

蓬蒿

golang 异步IO asynchronous i/o netpoller

DTT直播回顾:一文带你全面了解openGemini

华为云开源

时序数据库 开源数据库 openGemini

陈毅威“掌舵”SUSE 中国 3.0,谋势数字江湖

Rancher

一步一图带你构建 Linux 页表体系 —— 详解虚拟内存如何与物理内存进行映射

bin的技术小屋

内存管理 Linux Kenel Linux内核 页表 Linux内核源码

永续期权合约交易所系统开发案例(成品)

薇電13242772558

交易所

利用增强现实技术辅助跨国传输大文件的优化

镭速

Windows10 下 Neo4j1.5.8 安装教程

北桥苏

Python neo4j 图数据库 py2neo 知识问答系统

软件测试 | Windows平台下配置MySQL

测吧(北京)科技有限公司

测试

减少跨国传输大文件所需时间的技巧与工具

镭速

跨国传输大文件

软件测试 | 在Linux平台下安装MySQL

测吧(北京)科技有限公司

测试

定了!12支队伍进入HarmonyOS极客马拉松2023决赛

HarmonyOS开发者

HarmonyOS

阿里云中“间“力量!RocketMQ

指剑

阿里云 RocketMQ 函数计算FC 事件总线Eventbridge

一些可以极大提高工作效率的 Linux 命令

互联网工科生

Linux 自动化运维

Flink SQL 双表 JOIN 介绍与原理简析

腾讯云大数据

流计算 Oceanus

唯一一家!国际测评:文心大模型3.5总分第一,算法模型第一,行业覆盖第一

飞桨PaddlePaddle

人工智能 百度 大模型 文心一言 文心大模型

MES/MOM国内市场现状趋势与新生态模式参考

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

语音标注平台是推动人工智能发展的关键工具之一

数据堂

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