之前我在《TypeScript 5+装饰器变更的影响》里提到过,TypeScript 5+的装饰器不向下兼容,而原来默认启用了旧版装饰器的Deno面临一个抉择,应该怎么支持新版装饰器呢?
旧版装饰器和新版的区别在于
experimentalDecorators这个配置项的开启与否,Deno在1.25版本起默认启用了。
从2023年5月起就有人提出issue,并有了一系列讨论:
lucacasonato提出在1.37中直接使用新的,彻底禁用旧版本:
把我吓了一跳,赶快回复说完全禁用不合适:
直到12月有了个结论:
将在
1.40版本默认启用新版本装饰器,那么还想要使用旧版本的话,就与TypeScript的行为保持一致,需要在deno.json中显式设置experimentalDecorators为true。
直到1天前(2024年1月24日),这个issue被关闭:
今天1.40版本发布,意味着这个变更真正来到了!
之前用过我的
oak_nest或deno_nest的读者需要注意修改配置。不然启动服务时就会报错了: