AICon全球人工智能与机器学习技术大会8折特惠,购票立减¥960! 了解详情
写点什么

Deno 内部代码将停用 TypeScript,并公布五项具体理由

Elio Rivero

2020 年 6 月 22 日

Deno内部代码将停用TypeScript,并公布五项具体理由

日前 Deno 官方公布的一份文档指出,出于对当前环境的实际考虑,Deno 将停止在内部代码中继续使用 TypeScript。文档中提到的问题涉及 TypeScript 编译时间、结构以及代码组织方式等。未来,Deno 项目将使用纯 JavaScript 编写内部代码。



TypeScript 给 Deno 带来的问题

在使用 TypeScript 编写内部代码时,Deno 团队遇到了以下几个现实问题:


  • 在变更文件时,TypeScript 往往需要几分钟的编译时间,这就导致连续编译过程变得非常缓慢;

  • 在创建 Deno 可执行文件以及面向用户的 API 源文件时,TypeScript 结构会引发一系列运行时性能问题;

  • TypeScript 本身对于 Deno 代码的组织工作毫无帮助,反而增强了代码组织负担。Deno 团队提出的一大现实问题,是 TypeScript 会在两个位置复制相互独立的 Body 类;

  • 由于 TypeScript 编译器无法帮助开发者生成 d.ts 文件,内部代码与运行时 TypeScript 声明必须以手动方式保持同步;

  • 他们维护着两台 TS 编译器主机:一台用于内部 Deno 代码,另一台用于外部用户代码,但二者的作用其实非常相似。


在内部 Deno 代码中移除 TypeScript

Deno 团队计划删除内部 Deno 代码中的所有构建时 TS 类型检查与捆绑。团队打算将所有运行时代码转移到同一个 JavaScript 文件当中,但仍将使用随附的 d.ts 文件保存类型定义与说明文档。


值得一提的是,Deno 将仅在内部 Deno 代码中停用 TypeScript:Deno 用户代码中的 TypeScript 部分仍将保留,类型检查自然也将一同存在。


虽然 TypeScript 常被视为 JavaScript 的改进版本,但此次情况提醒我们问题也许没那么简单。与任何其他语言一样,TypeScript 也有自己的缺陷。其最重要的问题之一,在于缓慢的编译速度。在从纯 JavaScript 转换至 TypeScript 时,小型项目可能编译变慢的问题还不算严重,但大型项目(例如复杂的 React 应用程序)则将深受其害。从 Deno 项目的体量出发,停止使用 TypeScript 也算是顺理成章。


但这种性能妥协也可以理解,毕竟在开发过程中进行类型检查,相当于用编译时长换取安全保障。当然,TypeScript 项目中也提供关于如何解决并缩短编译时间的大量说明文档。最有趣的方法之一当数项目引用,意味着开发人员可以将大规模 TypeScript 代码片段拆分为较小的代码片段。


关注 Deno 停止使用 TypeScript 的更多详细信息

感兴趣的朋友可以点击此处,了解 Deno 项目团队在移除 TypeScript 并转而使用 JavaScript 方面的完整讨论。Ryan Dahl 及其合作者在其中全面探讨了当前问题、解决方案以及实现途径。


原文链接:


https://startfunction.com/deno-will-stop-using-typescript/


2020 年 6 月 22 日 15:0019316

评论 4 条评论

发布
用户头像
真矫情
2020 年 06 月 28 日 21:25
回复
这是矫情的问题吗?你每次保存代码后,都需要半分钟才能显示到页面上,你觉得开发是什么体验?
2020 年 07 月 21 日 14:27
回复
用户头像
Update June 10 2020: I saw that this design doc was being discussed more widely. Most people don't have the context to understand this narrow technical document - it is only applicable to a very particular, very technical situation in the internals of Deno. This is not at all a reflection on the usefulness of TypeScript in general. It's not a discussion about any publicly visible interface in Deno. Deno, of course, will support TypeScript forever. A website or server written in TypeScript is a very very different type of program than Deno - maybe much more so than novice programmers can appreciate - little of Deno is written in TypeScript. The target audience is the 5 to 10 people who work on this particular internal system. Please don't draw any broader conclusions.

展开
2020 年 06 月 23 日 17:53
回复
用户头像
期待Dart
2020 年 06 月 22 日 19:55
回复
没有更多了
发现更多内容

快成物流科技 x mPaaS | 小程序容器加持下的技术架构“提质增效”

蚂蚁集团移动开发平台 mPaaS

小程序 mPaaS 移动开发平台

Windows Terminal 安装和运行

HoneyMoose

微软 WSL 重装操作系统

HoneyMoose

中公、马士兵、千锋、拉勾入局,腾讯课堂“薪选”IT人才培养按下加速键

DT极客

“为爱而生 温暖陪伴”——2021年中国洗地机行业发展峰会圆满落幕

DT极客

这一次,彻底搞懂 Go Cond

HHFCodeRv

go

浅谈负载均衡

Damon

负载均衡 5月日更

融云2021 X-Meetup技术沙龙 探讨音视频技术新方向

融云 RongCloud

一张图看懂嵌入式系统组成

不脱发的程序猿

硬件开发 嵌入式系统 嵌入式学习路线

Flutter开发:Another exception was thrown:Unable to load asset:…的解决方法

三掌柜

5月日更

从技术趋势看质量赋能

BY林子

敏捷 软件测试 质量赋能

5G进京 “赶考”记:“占得上、保持稳、体验优、信号好”四道考题,分别打几分?

脑极体

PKI系统简介

上海派拉基础研发

CA PKI

高并发调优backlog多大合适?

运维研习社

运维 Nginx PHP-FPM 5月日更 并发调优

多方安全计算:隐私保护集合求交技术

华为云开发者社区

数据集 PSI 隐私保护集合交集 可信 伪随机函数

GitHub开源史上最大规模中文知识图谱

不脱发的程序猿

人工智能 自然语言处理 GitHub 开源项目 中文知识图谱

拥有5大核心竞争力的华为云GaussDB,成SACC2021最靓那一个…

华为云开发者社区

数据库 华为云 GaussDB 存算分离 GaussDB(for Redis)

Windows 任务管理器中如何显示 CPU 逻辑处理器情况

HoneyMoose

Pulumi 如何在 Windows 环境中设置

HoneyMoose

This BigData,Hadoop组成及生态

Simon郎

大数据 hdfs YARN hadoop3 大数据MapReduce

音频均衡器EQ

floer rivor

音视频 Eq

聊聊dubbo协议

捉虫大师

【和平精英x TcaplusDB】两周年,让我们一起加油!

tcaplus

数据库

保障实时音视频服务体验,华为云原生媒体网络有7大秘籍

华为云开发者社区

云原生 华为云 实时音视频 媒体网络 架构分层

CMMI V2.0丨如何通过CMMI真正在企业中的实施规模化敏捷开发

渠成CMMI

软件 研发管理 CMMI

并行文件存储和分布式 NFS 文件存储有何不同

焱融科技

云原生 高性能 文件存储 容器存储 技术博客

国内日志监控分析王者之sls

代码先生

分布式日志 海量数据分析 日志监控分析

人人都爱Kubernetes,Docker难道就不香了吗?

读字节

Docker Kubernetes DevOps

Hadoop定位问题日志跟踪

InfoQ_Springup

hadoop

Too many open files 的四种解决办法

陈迪

关于OpenHarmony 2.0共建进展

罗燕珊

鸿蒙 开源项目 OpenHarmony

Deno内部代码将停用TypeScript,并公布五项具体理由-InfoQ