到目前为止,它一直是最受欢迎的功能,现在它终于出现了:Svelte官方支持打字。
我们认为,无论您使用的是TypeScript还是JavaScript,它都会给您带来更好的开发体验--它还可以很好地扩展到更大的Svelte代码库。
在执行任何其他操作之前,您可以使用Normal模板并通过运行节点脚本/setupTypeScript.js来启动新的Svelte Tyescript项目:
如果您是VS Code的用户,请确保您使用的是(新的)官方扩展,它取代了James Birtls流行的扩展。在这篇博客文章的后面,我们将详细介绍在现有的Svelte项目中使用TypeScript所涉及的各个步骤。
在Svelte中支持TypeScript已经有很长一段时间了,但是您必须将许多不同的工具混合在一起,并且每个项目都独立运行。今天,几乎所有这些工具都生活在Svelte组织下,由一组负责整个流程并具有共同目标的人员进行维护。
在COVID被宣布为大流行的前一周,我将来自类似开发生态系统的最好的Svelte工具和想法整合在一起,并提供了一套获得一流打字支持的步骤。从那时起,许多人都投入进来,编写代码让我们做到这一点。
当您重新编写组件时,您会得到自动完成提示和类型检查,即使在标记内的表达式中也是如此。
TypeScript文件理解Svelte组件API-将.svelte文件导入.ts模块时,不会再出现红色曲折
为了理解TypeScript支持的两个主要部分,我们将其与TypeScript用来提供开发工具的技术进行比较。有一个编译器TSC,您可以在命令行上运行它将*.ts转换为*.js,然后还有一个TSServer,它是响应文本编辑器请求的节点API。TSServer是在编码时为编辑器提供所有JavaScript和TypeScript实时自省的工具,它包含了编译器的大部分代码。
对于Svelte,我们有Svelte编译器,现在我们有了Svelte语言服务器,它通过Language Server Protocol标准响应文本编辑器调用。一流的文字支持意味着这两个系统在处理文字代码方面都做得很好。
Svelte编译器对Typecript的支持是由Christian Kaisermann的Svelte预处理处理的,它现在是Svelte的官方项目。
对于编辑层面,我们通过Vetur从Pine';Pine在Vue生态系统中的工作中获得了灵感。Vetur提供LSP、VS代码扩展和CLI。Svelte现在还拥有LSP、VS代码扩展和CLI。
对于官方的Svelte vs Code扩展,我们建立在James Birtle在UnwrittenFun/svelte-vscode和UnwrittenFun/svelte-language-server中创建的基础之上。
Simon Holthosen和Lyu,wei-Da在改进JavaScript和打字自省方面做了大量工作,包括集成了@Halfnelson的svelte2tsx,它增强了对代码库中组件的理解能力。
您首先需要设置svelte-preprocess,它通过TypeScript编译器传递<;脚本lang=";ts";>;块的内容。
在Rollup项目中,如下所示-请注意,我们还需要安装@Rolup/plugin-tyescript,以便Rollup可以处理.ts文件:
+从';svelte-preprocess';;+从';@roll/plugin-typecript';导入自动预处理{...,plugins:[svelte({+preprocess:autoPreprocess()}),+typecript({sourceMap:!Production})]}。
要配置TypeScript,您需要在项目根目录中创建一个tsconfig.json:
每个项目的包含/排除可能不同-这些是默认设置,应该适用于大多数Svelte项目。
可以支持使用LSP的任何编辑器。VS代码扩展一直是我们的主要关注点,但是关于Atom的工作正在进行中,并且Vim via coc-svelte已经使用最新的LSP进行了更新。
即使您只使用JavaScript,这些编辑器扩展也会改善您的编码体验。该编辑器不会提供错误,但会提供推理和重构工具。您可以使用JavaScript将//@check-js添加到<;script>;标记的顶部,以获得更好的错误消息,而无需进行任何后续更改。
要将脚本切换为使用TypeScript,请使用<;Script lang=";ts&34;>;。希望你不会看到一片红色曲线的海洋。
有红色的曲折是很棒的,嗯,有点。不过,从长远来看,您希望能够验证代码中没有错误。要验证您的项目是否没有错误,可以使用CLI工具svelte-check。它的作用就像一个编辑器,询问所有.svelte文件的错误。
字符串npx svelte-check加载svelte-签入工作区:/Users/ortatherox/dev/svelte/example-appGetting svelte诊断...=
我们很高兴您的邀请。这项工作正在Sveltejs/Language-Tools Repo和Svelte Discorde的#Language-Tools频道进行。如果您想要报告问题、提交修复程序或帮助解决新编辑器的扩展等问题,您可以在那里找到我们。那里见!