服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

在 VSCode 中像写 TypeScript 一样写 JavaScript

日期: 来源:前端西瓜哥收集编辑:西瓜

大家好,我是前端西瓜哥。我们在 VSCode 编辑器中编写 js 代码,是会提供类型提示的。

VSCode 会推断一个变量是什么类型,并在你输入内容的时候,提供对应的 API 属性或方法补全。

如下图,在 js 文件中,arr 变量被判断为一个 number[] 类型,所以我们键入 arr. 时,会提供一个数组可以访问到的属性。

JavaScript Language Service

上面的能力来自 JavaScript Language Service,由 TypeScript 团队进行开发维护。

类型的推导并衍生出的智能提示,是基于 TypeScript 的

TypeScript 可以不显式写类型标注,会做自动类型推导的。JavaScript 正是利用这一点能够一定限度地得到类型。

虽然智能,但不完全智能。基于 TS 的智能推断不能识别运行时变量发生的类型变化

看下面的例子,相比 TypeScript,JavaScript 是不可预测的,即可以改变类型,改了类型后 arr 还是推导为原来的 number[]

除此之外,我们还可以基于 JSDoc 来做智能提示。在一个变量的上面加上 JSDoc 格式的注释即可。

格式大致这个样子:

/** @标签 {类型标注} */

下图中我们给一个 rect 变量声明了对象结构。可以看到,出现了类型声明中属性的智能提示。

然后是函数参数的注释声明:

需要注意的是,JavaScript Language Service 只是提供智能提示,并不会做真正的类型检查。所以假设你给一个变量声明标注为数值类型,结果赋值为对象是不会提示报错的。

如果你想要做类型检查(编辑器层面),可以用 @ts-check

@ts-check

然后是 @ts-check,让一个 js 文件被当作一个 ts 文件来处理。

在文件的开头添加 //@ts-check 即可开启。

看,现在我们不能给一个初始化时为 number[] 赋予其他不兼容的类型值了。

/Users/watermelon/Library/Application Support/typora-user-images/image-20230127235510088.png

不过这只是编辑器层面的提示,它依旧是正确的 js 写法,是可以正常运行的。

然后 rect 变量也因为声明时只有 x,缺少其他属性而报错了:

实际应用

我个人来说,基本都是写 TS 了,但偶尔要写一些项目外的简单脚本或许写点小 demo。如果用 TS,太重了,TS 配置也繁琐,这时候直接用 js 会更简单些。

虽然 VSCode 能支持一些简单的类型推导,但并不是总是智能,比如声明一个函数,传入的参数类型是无法推导的,这时候通过 JSDoc 来声明类型,就能提供不错的类型提示,通过智能提示减少写错属性名的低级错误。

另外就是打包工具的配置文件通常是 js,要换成 ts 会非常麻烦,用 VSCode 的智能推导是不错的选择。

下面是 rollup 工具的配置文件写法。

@ts-check@type 的组合拳,效果挺不错的。

结尾

非常好用,建议都试试,十分酸爽。

我是前端西瓜哥,欢迎关注我,学习更多前端知识。



相关阅读,

TypeScript 真香,说说它的优缺点

老是写重复代码?用一个实例教你如何使用 VSCode Snippets 解放生产力

VSCode 插件推荐:Code Spell Checker

TypeScript 中 type 和 interface 有什么区别?



关注公众号,后台回复 「字节」,即可获得字节前端面试资料

相关阅读

  • 一起学 pixijs(2):修改图形属性

  • 大家好,我是前端西瓜哥。我们做动画、游戏、编辑器,需要根据用户的交互等操作,去实时地改变图形的属性,比如位置,颜色等信息。今天西瓜哥带大家来看看在 pixijs 怎么修改图形的属
  • Amazing!如何根据背景色自动切换黑白文字?

  • 在项目中,经常会碰到背景色不确定的场景,为了让内容文字足够清晰可见,文字和背景之间需要有足够的对比度。换句话说,当背景是深色时,文字为白色,当背景是浅色时,文字为黑色,就像这样
  • 巧用视觉障眼法,还原 3D 文字特效

  • 最近群里有这样一个有意思的问题,大家在讨论,使用 CSS 3D 能否实现如下所示的效果:这里的核心难点在于,如何利用 CSS 实现一个立体的数字?CSS 能做到吗?不是特别好实现,但是,如果仅
  • 那些炫酷的 CSS 文字效果之诗词《兔》

  • 不知不觉已经迈入2023年,今年是兔年,想到兔子就会联想到玉兔,中秋,胡萝卜,兔子不吃窝边草,这就越扯越远了,今天的主题是用纯CSS来实现各种不错的文字效果,文字则摘录古诗词中有关《
  • 今晚 B 站直播预告 - 《你所不知道的CSS》

  • 扫码直达 B 站直播间,7 号晚 20:00 点准时开始,预计时长 1 小时,感兴趣来听听:Hi 各位小伙伴,本周六(2023/01/07)晚 20:00 点,我将在 Bilibili 给大家带来一场《你所不知道的CSS》
  • 不负时光,Coco 的 2022 年终总结

  • 从来没有写过年终总结,回首 2022,感觉有很多令人难忘的瞬间,觉得今年很有必要记录一下。在回家的列车上,回忆一整年的的经历,有挣扎、有坚持、有迷茫、有喜悦,最终也有收获。用文
  • CSS 奇思妙想之酷炫倒影

  • 在 CSS 中,倒影是一种比较常见的效果。今天,我们就将尝试,使用 CSS 完成各类不同的倒影效果,话不多说,直接进入主题。实现倒影的两种方式首先,快速过一下在 CSS 中,实现倒影的 2 种
  • 丢弃 HttpClient 了,这款轻量级框架更强!

  • 来自:CSDN,作者:Kevin&Amy链接:https://blog.csdn.net/qq_38233258/article/details/115799602一、Forest1.1 业务需求一般情况下是后端提供接口,前端调用,解决需求,但是有的时候为

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 在 VSCode 中像写 TypeScript 一样写 JavaScript

  • 大家好,我是前端西瓜哥。我们在 VSCode 编辑器中编写 js 代码,是会提供类型提示的。VSCode 会推断一个变量是什么类型,并在你输入内容的时候,提供对应的 API 属性或方法补全。如
  • 一起学 pixijs(2):修改图形属性

  • 大家好,我是前端西瓜哥。我们做动画、游戏、编辑器,需要根据用户的交互等操作,去实时地改变图形的属性,比如位置,颜色等信息。今天西瓜哥带大家来看看在 pixijs 怎么修改图形的属
  • Fabrie 文档 V2.7.5版本更新 | Fabrie小程序上线啦!

  • 基于用户洞察和反馈,Fabrie会定期更新迭代,用更好的自己来与你相遇,欢迎随时给我们提出问题和建议。在本次更新中,我们终于上线了「Fabrie微信小程序」,并对「团队管理页面」进行
  • Fabrie 文档 V2.7.5版本更新 | AI功能开启内测体验!

  • 基于用户洞察和反馈,Fabrie会定期更新迭代,用更好的自己来与你相遇,欢迎随时给我们提出问题和建议。在本次更新中,我们开启了AI功能的内测体验、升级了采集插件和素材中转站、上