---
author: Tim Anderson
category: 观点
comments_data: []
count:
  commentnum: 0
  favtimes: 0
  likes: 0
  sharetimes: 0
  viewnum: 1164
date: '2023-12-26 23:49:31'
editorchoice: false
excerpt: Svelte 的开发者 Rich Harris 解释了为什么反其道而行，从 TypeScript 切换到 JavaScript 和 JSDoc。
fromurl: https://devclass.com/2023/05/11/typescript-is-not-worth-it-for-developing-libraries-says-svelte-author-as-team-switches-to-javascript-and-jsdoc/
id: 16509
islctt: true
largepic: /images/p/202312/26/234825lw793i739kft0fj9.jpg
permalink: /article-16509-1.html
pic: /images/p/202312/26/234825lw793i739kft0fj9.jpg.thumb.jpg
related: []
reviewer: wxy
selector: ''
summary: Svelte 的开发者 Rich Harris 解释了为什么反其道而行，从 TypeScript 切换到 JavaScript 和 JSDoc。
tags:
- TypeScript
- JavaScript
thumb: false
title: Svelte：TypeScript 并“不值得”用来开发库
titlepic: true
translator: ChatGPT
updated: '2023-12-26 23:49:31'
---

![](/images/p/202312/26/234825lw793i739kft0fj9.jpg)


TypeScript 的使用率在不断上升，Svelte 的开发者 Rich Harris 解释了为什么反其道而行，从 TypeScript 切换到 JavaScript 和 JSDoc。


Svelte 的一个将 TypeScript 转为 JSDoc 的[拉取请求](https://github.com/sveltejs/svelte/pull/8569)引起了一些困惑的评论。评论中有人说：“这个改变是出于什么原因呢？我在到处寻找这个问题或相关讨论，但我没有找到。” 随后，这个问题在 GitHub 上因“讨论过于激烈”而被锁定回复。


在上个月的一次 Svelte Society [采访](https://youtu.be/MJHO6FSioPI)中，Harris 提供了进一步的背景信息，他说：“我们决定要做的一件事就是在 Svelte 核心代码库中脱离 TypeScript，转向使用 JavaScript。这里有一些细微的复杂性我未曾充分解释。”


他持有的观点是：“类型是非常好的，但是 TypeScript 确实有些困扰…… 当你开始使用 .ts 文件后，你就必须有相应的工具来支持…… 当你使用像 TypeScript 这样的非标准语言时，你会遇到很多阻碍，我已经开始认识到这并不值得。因此，我们将我们所有的类型都放入了 JSDoc 注解中，我们也能获得所有的类型安全性，但没有任何的缺点，因为它就是 JavaScript，所有的东西都在注解中，你可以直接运行代码。这就是我们在 Sveltekit 代码库中所做的，它在 Svelte 4.0 中表现得非常好，所以我们决定对 Svelte 同样采取这种方式，因为这将让我们能够更快速地前进。”


虽然 Svelte/SvelteKit 并非最受欢迎的 JavaScript 框架，但它却是广受好评的框架之一。


开发者倾向于使用 TypeScript，主要因为他们发现强类型降低了错误的发生率，并提升了编码过程中的体验，如代码自动补全和即时帮助等功能。然而，令人惊讶的是，主要做为 API 文档工具的 [JSDoc](https://github.com/jsdoc/jsdoc)，也可以进行类型检查。这项功能已直接内置在 Visual Studio Code 中，如 [这篇文档](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_type-checking-javascript) 所述。开发者只需在 JavaScript 文件顶部加上：



```
// @ts-check

```

正如文档中的解释，“当无法推断出类型时，可以利用 JSDoc 注解进行明确说明”。这个特性实际上是由 TypeScript 提供支持，这意味着在实际环境下，TypeScript 和 JSDoc 是相辅相成的。


不过，一个易被忽视的细节是，Harris 主要是在针对库开发的上下文里关注 TypeScript。他认为切换到 JSDoc 在开发应用时，“可能收益不大”，他说道：“如果你在开发一个应用，无论怎样你都不可避免地需要一个构建步骤。你需要优化代码，需要代码压缩，需要打包各种资源。而如果你在构建一个库，我将极力推荐你使用 JSDoc。”


Harris 在 Hacker News 进一步 [补充](https://news.ycombinator.com/item?id=35892250)，“Svelte 的用户无需担心，这个变动不会影响到你与 Svelte 使用 TypeScript 的能力——从 Svelte 导出的函数仍然会有所有熟悉的 TypeScript 好处，如类型检查，智能感知，内联文档等”。他坚定地表示：“我们对 TypeScript 的承诺比以往任何时候都更为坚决。”


*（题图：DA/e20ff1ee-6388-42ce-8d82-66bc6eebf63c）*




---


via: <https://devclass.com/2023/05/11/typescript-is-not-worth-it-for-developing-libraries-says-svelte-author-as-team-switches-to-javascript-and-jsdoc/>


作者：[Tim Anderson](https://devclass.com/author/tanderson/) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)