0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

前端框架Svelte放弃TypeScript,JS赢!

OSC开源社区 来源:OSC开源社区 2023-05-11 10:39 次阅读

根据 Svelte repo 中"TS to JSDoc Conversion"PR 的描述,Svelte 团队将会从目前使用的 TypeScript 迁移到 JSDoc。

a8a01a30-ef56-11ed-90ce-dac502259ad0.jpg

前端 UI 框架 Svelte 创始人 Rich Harris 在推特的回复印证了这一消息。他表示这个决定没有改变 Svelte 的类型安全。

a8cb3c38-ef56-11ed-90ce-dac502259ad0.png

负责 Svelte 编译器的开发者则说道,改用 JSDoc 后,代码不需要编译构建即可进行调试 —— 简化了编译器的开发工作。毕竟目前的调试工作比较复杂,需要使用构建步骤进行调试。 另外,使用 JSDoc 不会影响编译器的开发安全,因为它的类型几乎等同于 TypeScript,依然可以使用 tsc 编译器检查类型。

a8dd946e-ef56-11ed-90ce-dac502259ad0.png

当然,Svelte 开发者(不是编译器开发者)仍会像现在一样获得类型定义文件。因此对于 Svelte 开发者来说,在类型方面不会有任何变化。 Svelte 不是第一个放弃 TypeScript 的前端框架。早在 2020 年,Deno就迁移了一部分內部 TypeScript 代码到 JavaScript,以减少构建时间。当时Deno 团队计划删除所有内部代码构建时的 TS 类型检查与捆绑。

a90453b0-ef56-11ed-90ce-dac502259ad0.png

对此,Deno 团队给出的理由是:

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

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

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

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

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

总结就是减少构建时间、降低发布的代码体积、减少编写的代码量。 要注意的是,当时 Deno 仅在内部代码中停用 TypeScript,Deno 用户代码中的 TypeScript 部分仍将保留,类型检查自然也将并存。 从这些案例可以看出,虽然 TypeScript 常被视为 JavaScript 的改进版本,但问题也许没那么简单。与任何其他语言一样,TypeScript 也有自己的缺陷。其最重要的问题之一,在于缓慢的编译速度。在从纯 JavaScript 转换至 TypeScript 时,小型项目可能编译变慢的问题还不算严重,但大型项目(例如复杂的 React 应用程序)则将深受其害。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 前端
    +关注

    关注

    1

    文章

    192

    浏览量

    17747
  • 编译器
    +关注

    关注

    1

    文章

    1623

    浏览量

    49103

原文标题:前端框架Svelte放弃TypeScript,JS赢!

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    鸿蒙跨端实践-JS虚拟机架构实现

    在Roma跨端方案中,JS虚拟机是框架的核心,负责执行动态化的JS代码。在Android平台采用了基于V8的J2V8,iOS平台则使用了系统自带的JSCore,而在HarmonyOS中,由于业界无
    的头像 发表于 09-30 14:42 2390次阅读
    鸿蒙跨端实践-<b class='flag-5'>JS</b>虚拟机架构实现

    工程师必备!Node.js和常见管理工具介绍(附操作演示)

    在现代软件开发中,JavaScript已成为一种广泛使用的编程语言,在web前端开发、后端开发、移动应用端开发等领域中都有它的身影。在本文中,将从JavaScript语言为出发点,揭示这一
    的头像 发表于 08-30 12:34 298次阅读
    工程师必备!Node.<b class='flag-5'>js</b>和常见管理工具介绍(附操作演示)

    bootstrap框架和vue框架的区别

    Bootstrap和Vue都是目前非常流行的前端开发框架,它们各自具有独特的优势和特点。 设计理念 Bootstrap是一个基于HTML、CSS和JavaScript的前端开发框架,主
    的头像 发表于 07-11 09:55 837次阅读

    bootstrap框架用什么软件开发

    Bootstrap是一个流行的前端框架,用于快速开发响应式和移动优先的Web应用程序。它提供了一套预定义的CSS和JavaScript组件,使得开发者可以快速构建出漂亮的用户界面
    的头像 发表于 07-11 09:50 486次阅读

    鸿蒙开发:【从TypeScript到ArkTS的适配规则】

    ArkTS通过规范约束了TypeScript(简称TS)中过于灵活而影响开发正确性或者给运行时带来不必要额外开销的特性
    的头像 发表于 05-14 09:37 1951次阅读
    鸿蒙开发:【从<b class='flag-5'>TypeScript</b>到ArkTS的适配规则】

    鸿蒙TypeScript学习21天:【声明文件】

    TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。
    的头像 发表于 04-19 15:02 573次阅读
    鸿蒙<b class='flag-5'>TypeScript</b>学习21天:【声明文件】

    鸿蒙语言TypeScript学习第16天:【类】

    TypeScript 支持面向对象的所有特性,比如 类、接口等。
    的头像 发表于 04-15 09:29 1008次阅读
    鸿蒙语言<b class='flag-5'>TypeScript</b>学习第16天:【类】

    鸿蒙TypeScript 开发学习第9天:【TypeScript Number】

    TypeScript 与 JavaScript 类似,支持 Number 对象。 Number 对象是原始数值的包装对象。
    的头像 发表于 04-07 18:02 780次阅读
    鸿蒙<b class='flag-5'>TypeScript</b> 开发学习第9天:【<b class='flag-5'>TypeScript</b> Number】

    鸿蒙TypeScript入门学习第6天:【条件语句】

    条件语句用于基于不同的条件来执行不同的动作。 TypeScript 条件语句是通过一条或多条语句的执行结果(True 或 False)来决定执行的代码块。
    的头像 发表于 04-01 13:51 746次阅读
    鸿蒙<b class='flag-5'>TypeScript</b>入门学习第6天:【条件语句】

    鸿蒙TypeScript开发入门学习第3天:【TS基础类型】

    任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,它常用于以下三种情况。
    的头像 发表于 03-28 15:02 529次阅读
    鸿蒙<b class='flag-5'>TypeScript</b>开发入门学习第3天:【TS基础类型】

    鸿蒙TypeScript入门学习第2天【TypeScript安装】

    本文介绍 TypeScript 环境的安装。 我们需要使用到 npm 工具安装,如果你还不了解 npm,可以参考我之前文档。
    的头像 发表于 03-27 15:22 500次阅读
    鸿蒙<b class='flag-5'>TypeScript</b>入门学习第2天【<b class='flag-5'>TypeScript</b>安装】

    【鸿蒙】NAPI 框架生成工具实现流程

    NAPI 框架生成工具 可以根据用户指定路径下的 ts(typescript)接口文件一键生成 NAPI 框架代码、业务代码框架、GN 文件等。在开发
    的头像 发表于 02-28 17:00 678次阅读
    【鸿蒙】NAPI <b class='flag-5'>框架</b>生成工具实现流程

    web前端开发和前端开发的区别

    、CSS和JavaScript等技术来构建用户界面,实现用户与应用程序的交互。Web前端开发包括网页设计、网页编码、前端框架使用以及优化页面性能等任务。 前端开发是一个更广泛的概念,它
    的头像 发表于 01-18 09:54 3487次阅读

    什么是LlamaIndex?LlamaIndex数据框架的特点和功能

    LlamaIndex是一个数据框架,用于让基于LLM的应用程序摄取、结构化和访问私有或领域特定的数据。它提供Python和Typescript版本。
    的头像 发表于 01-05 11:08 9338次阅读
    什么是LlamaIndex?LlamaIndex数据<b class='flag-5'>框架</b>的特点和功能

    【坚果派】JS开源库适配OpenHarmony系列——第一期实操

    由于OpenHarmony应用是基于ArkTS开发,而ArkTS是在保持TypeScript(简称TS)基础语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。因此在开发OpenHarmony三方库时,建议首选在成熟的JS/TS开源三方库上开发。
    的头像 发表于 12-26 10:48 1155次阅读
    【坚果派】<b class='flag-5'>JS</b>开源库适配OpenHarmony系列——第一期实操