当前位置: 首页 > news >正文

想建设一个网站开发网站所用技术

想建设一个网站,开发网站所用技术,优化营商环境的金句,网络托管公司有哪些这几个月#xff0c;想必大家都听到过一个新闻#xff1a; Svelte 弃用 TypeScript#xff0c;改用 JSDoc 了。 TypeScript 我们知道#xff0c;是用来给 JS 加上类型的#xff0c;可以实现类型提示和编译时的类型检查。 那 JSDoc 能够完成一样的功能么#xff1f;Svel…这几个月想必大家都听到过一个新闻 Svelte 弃用 TypeScript改用 JSDoc 了。 TypeScript 我们知道是用来给 JS 加上类型的可以实现类型提示和编译时的类型检查。 那 JSDoc 能够完成一样的功能么Svelte 是出于什么原因弃用 TS 的呢 先不着急回答这个问题。 我们总得先了解下 JSDoc 可能大家认为的 JSDoc 是这个东西 在代码的注释上加上类型的标识然后通过 jsdoc 命令行工具就可以直接生成文档。 比如这样的文档 确实这个是 JSDoc 最初的含义。 但我们说的 JSDoc 并不是这个而是 TS 基于 JSDoc 语法实现的在注释里给代码添加类型的语法。 文档在这里 ts 支持在 js 文件的注释里通过 JSDoc 的语法给它加上类型。 至于有什么意义那可就太多了。 比如一个 JS 的配置文件你想在写配置的时候能有提示就可以用 JSDoc 这里注释里的 type 就是 JSDoc 声明类型的语法。 在 vite 文档里你可以看到对 JSDoc 的支持 我们自己试一下 mkdir jsdoc-test cd jsdoc-test npm init -y创建项目和 package.json。 然后安装 typescript npm install --save-dev typescript创建 tsconfig.json 文件 npx tsc --init生成的 tscconfig.json 太多注释了我们删一下 然后创建 src/index.ts function add(a: number, b: number) {return a b; }这样在用到这个 add 的时候就会做类型检查 在 tsconfig.json 里 include 一下 之后执行编译 npx tsc生成的代码是这样的 这个是 ts 的编译流程大家都很熟悉。 现在问题来了我有一个 src/index2.js怎么实现一样的类型检查呢 这样写 /*** param {number} a 参数aaa* param {number} b 参数bbb*/ function add2(a, b) {return a b; }注释里的就是 JSDoc 的语法。 但现在并没有报类型错误 需要在 tsconfig 里开启 allowJS 是允许编译 JScheckJS 是在编译 JS 的时候也做类型检查。 开启后你就会发现js 文件里也会做类型检查了 hover 上去的时候会提示类型信息 注意这可不是用 ts 语法声明的类型而是用 JSDoc 写的。 然后我们开启 dts 再编译 npx tsc可以看到同样能产出 d.ts 类型声明文件 而这时候产物的 JS 代码和源码差别不大 因为本来 JSDoc 就是在注释里的类型检查也好、生成 dts 也好都不用改动源码。 这就是 JSDoc 最大的好处无侵入的给 JS 加上类型拥有和 ts 一样的类型检查、类型提示、生成 dts 等功能但却不需要编译因为 JS 代码可以直接跑。 有同学可能会说就声明个函数类型就和 ts 一样了 那肯定不止这么点语法我们再看几个 比如可以用 type 给变量声明类型 这里可以是各种类型比如函数类型 如果类型被多处用到可以用 typedef 抽出来单独命名 你还可以把这个类型放到 dts 文件里在这里 import 进来用 比如我把它放到 guang.d.ts 里 然后这样引入用 这样就避免了在 typedef 里写大段类型定义了不然代码写多了就不好维护了。 这样就可以在 dts 里定义类型然后在 js 里通过 JSDoc 引入来用。 dts JSDoc 是绝佳搭配。 然后我们继续看 JSDoc 的函数类型定义 这分别是可选参数、参数默认值、返回值类型的语法。 还有同学说那 ts 的泛型呢这个 JSDoc 不支持的吧 当然也是支持的这样写 通过 template 声明类型参数然后下面就可以用了。 泛型都可以用那基于泛型的类型编程也就是类型体操当然也可以玩 一般这种复杂类型还是抽离到 dts 里然后 type {import(‘xxx’).xxx} 引入比较好。 再就是 class 了这个自然也是支持的。 比如声明一个泛型类 这段类型大家能看懂么 就是声明了一个泛型类有一个类型参数 T。它通过 extends 继承了 Set 类型。 它有个 name 属性的类型为 T并且还声明了构造器和 sleep 方法的类型。 用一下试试 name 和 sleep 的类型继承的 Set 的类型都没问题。 这就是 JSDoc 定义 class 类型的方式。 综上用 JSDoc 可以定义变量、函数、class、泛型等可以从别的 dts 文件引入类型。 基本上 ts 能做的JSDoc 也都可以。 但是JSDoc 语法毕竟是在注释里的多了一大坨东西而且写起来也不如 ts 语法直观。 所以一般没必要这样写除非你是给 JS 加类型。 那 svelte 是出于什么原因选择了 JSDoc 的方式呢 看下那个 pr 就知道了 直接看官方回复 也就是说用 ts 的语法需要编译后才能调试这样需要再 sourcemap 一次才能对应到源码。 但是用 JSDoc 的方式不用编译就可以直接调试。 估计是遇到了啥 VSCode 调试上的问题。 然后下面还有个 VSCode 调试器的维护者评论说有任何调试相关的问题可以找我 总之svelte 选择从 ts 转成 JSDoc dts 并不是因为 ts 有啥问题主要是为了调试方便。 那我们再看下它怎么用的吧 可以看到是 js 文件里用 JSDoc 来声明类型 然后复杂类型在 dts 里定义然后这里引入 就和我们刚才测试的一样。 总结 这几个月经常听到知名开源项目抛弃 ts 拥抱 JSDoc 的新闻我们一起探究了一下。 JSDoc 是在 js 的注释里通过 type、typedef、template、param 等来定义类型然后开启 checkJS 和 allowJS 的配置之后tsc 就可以对 js 做类型检查。 ts 里可以定义的类型在 JSDoc 里都可以定义比如变量、函数、class、泛型甚至类型编程等。复杂的类型还可以抽离到 dts 里在 type 里引入。 也就是说 JSDoc 确实可以替代 ts。 然后我们看了 svelte 选择 JSDoc 的原因只是为了调试方便。这样不用编译就可以直接跑 js 代码可以直接定位到源码。而且这样也能利用 ts 的类型提示和检查的能力。 所以很多人就说 svelte 抛弃了 ts。 这叫抛弃么 并不是JSDoc 只是另一种使用 ts 的方式而已。 更多内容可以看我的小册《TypeScript 类型体操通关秘籍》 最后 欢迎关注所谓前端微信公众号,大家一起交流 点击扫码关注
http://www.zqtcl.cn/news/348338/

相关文章:

  • 大型网站的标准莱芜市官网
  • 建站用Wordpress还是青州网站建设青州
  • 百度网站收录更新建网站的公司赚钱吗
  • 哪种语言做网站最快网站大全app下载
  • 手机营销网站制作网站建设备案和免备案的区别
  • 浙江省住房和城乡建设厅网站打不开中国建设银行官网站纪念币预约
  • 推广软件的网站安徽省城乡建设网站
  • 用网站做淘宝客怎么样珍爱网
  • 龙岩建设局招聘网站网站dns解析失败
  • 音乐网站的音乐怎么做深圳美容网站建设
  • 贵阳市观山湖区网站建设wordpress博客vieu模板
  • 怎么区分网站的好坏网站建设营销型号的区别
  • wordpress固定链接 中文建设网站优化
  • 东莞地产网站建设简述建设iis网站的基本过程
  • 外贸网站建设 公司价格怎样在手机上制作网站
  • 网站建设电话销售录音企业做网站有什么用
  • 网站布局设计软件软件工程大学排名
  • 自己的网站做防伪码深圳软件开发公司招聘
  • 网上购物网站大全wordpress文本悬停变色
  • 科技类公司网站设计如何做各大网站广告链接
  • 深圳做h5网站制作奢侈品网站设计
  • 用什么程序做网站佛山网站建设慕枫
  • 萍乡网站建设哪家公司好惠州开发做商城网站建设哪家好
  • 2021半夜好用的网站在菲做平台网站
  • 国家排污许可网站台账怎么做wordpress表单位插件
  • 如何构建成交型网站wordpress搭建英文网站
  • 阿里云网站建设方案书怎么写四川做网站公司哪家好
  • 提供衡水网站建设wordpress游客看小图登陆查看大图
  • 网站开发优势wordpress 密码破解
  • 做网站空间需要多大深圳服装网站建设