TypeScript 被抛弃, Deno在其中做了什么?

2023-10-28 11:40
文章标签 typescript 抛弃 deno

本文主要是介绍TypeScript 被抛弃, Deno在其中做了什么?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近得到一个消息 ,说是 Deno 将停止在其内部代码中使用 TypeScript。

问题的来源包括了 TypeScript 编译时间、结构和代码管理等。

在以后,Deno 的内部代码将使用原生 JavaScript 进行开发。

 

 

Deno 使用 TypeScript 的现存问题

目前 Deno 团队在内部代码中使用 TypeScript 时,可能会遇到以下的几个问题:

  • 当更改文件时,TypeScript 的编译需要几分钟,这使得项目文件的连续编译非常缓慢。
  • 在创建实际的 Deno 可执行文件和面向用户的 API 文件时,使用的 TypeScript 结构会造成项目运行的性能问题。
  • 事实证明,TypeScript 本身对 Deno 代码管理没有帮助,并且 Deno 团队正经受着相反的效果。在项目的议题列表中就提到一个问题:在两个不同的位置产生了相同的独立主体类。
  • 必须手动保持内部代码和运行时 TypeScript 声明的同步,因为 TypeScript 编译器对生成 d.ts 文件没有帮助。
  • Deno 团队需要去维护两台 TS 编译器主机:一个用于内部代码,另一个用于外部用户代码,尽管两者的目标相似。

Deno 内部代码删除 TypeScript

Deno 团队的目标是删除所有构建时 TS 类型检查和内部代码的捆绑。他们打算将所有运行时代码移动到一个 JavaScript 文件中。然而,他们还是使用配套的 d.ts 文件来保存类型定义和文档记录。

值得注意的是,Deno 将只在内部代码中停止使用 TypeScript,Deno 用户代码仍然可以使用 TypeScript,因此会进行类型检查。

虽然 TypeScript 有时被视为 JavaScript 的改进版本,但以上情况表明事实并非如此。它具有任何其他语言一样的缺陷,最重要的问题之一是编译速度慢。从原生 JavaScript 切换到 TypeScript 时,小型项目可能不会在编译时间上出现大幅度的增长,但在大型项目(如复杂的 React 应用程序)中,它就会很明显。考虑到编译运行时长,Deno 将停止使用 TypeScript 也就不足为奇。

项目开发过程进行的安全性类型检查,在编译时是有代价的。TypeScript 项目有一个关于如何解决和改进编译时间的文档,这是有存在意义的。最有趣的方法之一是采取项目引用,它允许开发人员将一个大的 TypeScript 代码片段分解成更小的片段。

以上都是一些鄙人的拙见 还有关于 Deno 从内部代码中删除 TypeScript 并改用 JavaScript 的完整的讨论了,都可以在本文中找到,各位有其他的看法都说出来或者是评论

我整理了一些的Python及其他后端的资料 有需要的可以私信我666

这篇关于TypeScript 被抛弃, Deno在其中做了什么?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/292979

相关文章

创建 typescript 项目.md

有时候需要创建一个最简单的 typescript 项目来验证一些东西,这里记录一下如何创建一个最简单的 typescript 项目。 创建并初始化项目 $ mkdir my-typescript-project$ cd my-typescript-project$ npm init -y$ npm install typescript ts-node @types/node --save

TypeScript数据结构与算法系列(一) —— 链表

TypeScript目录 链表常用操作1.初始化链表2. 插入节点3. 删除节点4. 访问节点5. 查找节点 图源:你好算法 内存空间是所有程序的公共资源,在一个复杂的系统运行环境下,空闲的内存空间可能散落在内存各处。我们知道,存储数组的内存空间必须是连续的,而当数组非常大时,内存可能无法提供如此大的连续空间。此时链表的灵活性优势就体现出来了。 链表(linked list)

VueSax-解决Vue3报错问题,并支持typescript

以下为坑点 根据官方提示,本人在vue3+typescript的项目中添加了vuesax的组件依赖 根据正常的导入依赖思路编写代码,发现typescript一直报 查询vuesax的目录文件发现存在ts文件,于是乎觉得是自己的问题,就查阅gpt与网上资料,查了一晚上加入各种方法,都没有解决,于是乎选择javascript进行测试,发现还是不行! js里虽然不报错,但是在页面

Vue3 + TypeScript 实现防抖(Debounce)和节流(Throttle)

在Vue3项目中结合TypeScript使用防抖(Debounce)和节流(Throttle)技术,可以有效提升应用的性能和用户体验,尤其是在处理频繁触发的事件(如滚动、窗口大小调整、输入框内容变化等)时。下面将详细介绍这两种技术的原理、使用方法以及适用场景。 一、防抖(Debounce) 原理: 防抖技术通过延迟函数的执行来减少函数的调用频率。在事件被触发n秒后再执行回调,如果在这

Typescript实现react-redux的useSelector和useDispatch的状态定义

背景:react中使用typescript,在引入redux之后很多状态定义有问题,记录下来(文章记录学习react-redux过程中的踩坑)。 1.useSelector时,state语法报错,类型为unknown,如下图 我的store状态设置的很简单,两个模块导出,只在state中定义了一个基础类型 在组件中使用useSelector取state中的值,然后报state类型未知 我

TypeScript中的函数与类

TypeScript中的类 传统的JavaScript程序使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员来讲就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来的。 从ECMAScript 2015,也就是ECMAScript 6开始,JavaScript程序员将能够使用基于类的面向对象的方式。 使用TypeScript,我们允许开发者现在就使用这些特性,

Typescript 常用变量类型声明

函数声明变量 // 基础类型(number、boolean、string)const int = (arg1: number) {// ...}// 数组类型const arr1 = (arg1: number[]) {// ...}// 另一种写法,使用泛型const arr2 = (arg1: Array<number>) {// ...}// 任意类型(any)// a

VUE3+FLASK+TYPESCRIPT(实习接触,学习并自主实现)

开头         不同于笔者在学校自学简单的html+js+css的模式,加入了前端框架VUE3真的是一个非常方便的工具,而且本人主攻于c++方向,像ts这种更严格的语法标准反而更加比原生js更能让我接受,由于这三个都是本人没接触的库框架和语言,所以笔者采取的是先学习在边做项目边巩固的方法。 VUE3初始化         下面提供一个简单的VUE3+FLASK案例,旨在入门 打通Vu

Typescript 使用 Jest 进行单元测试

参考文章:快速开始·Jest 安装所需依赖:npm install --save-dev ts-node jest @types/jest ts-jest Jest 转换 TypeScript 代码需要ts-node添加并配置 Jest 配置文件:jest.config.ts // jest.config.tsmodule.exports = {// TypeScript 代码预处理pres

TypeScript与vue

一、为组件的props标注类型         - 在没有使用TS之前,是这样接受props:                          - 在TS环境中,是这样接受props:                          - 对于props的可选项如何限制呢?                 1、类型限制                         类型限制在接收