- MediaWiki 会自动压缩 common.js,但是压缩工具不兼容 EMCAScript2016(俗称 ES6)语法。
- 因此任何使用 ES6 及之后的新特性编写的代码,最终都要改写成难看的 ES5 语法代码。
- 同时 MediaWiki 不会在提交编辑的时候告诉你,哪里不符合,只能自己去看报错,一遍一遍改。
- Typescript 可以将 TS 代码自动编译成 ES5 语法的 JS 代码,你可以放心大胆地使用新特性。
- 比如使用
.?
可选链、??
空值合并符,而不是写好几行自己都看不清的判断式。 - 编译得到的代码可以通过 MediaWiki 压缩器的校验,不用担心这些问题。
- 比如使用
- Typescript 在 JavaScript 的基础上添加了类型校验,可以检查出很多隐藏问题。
- 根据 MDN 的数据,现有网页上的大部分 JS 错误来源于类型错误。
- 编译 TS 需要安装 NodeJS、Typescript。
- TS 无法将
Promise
、function*
、Intl
等特性编译为 ES5 代码,因为 ES5 中没有实现这些功能的方法。- 大部分可以正常编译,比如代码里面的
let
、const
都会编译成var
,for(of)
会编译成原始的for(;;)
。
- 大部分可以正常编译,比如代码里面的
- TS 编译出来的文件会添加
Polyfill
(可以理解为代码特性补全),因此编译后的代码并不好看。 - TS 无法校验所有的类型错误,只能发现绝大部分。
- 不能像以往那样修改 JS,想到哪写到哪,需要打开集成开发环境修改仓库中的代码并同步。
- 让 MediaWiki 加紧开发支持 ES6 语法的 JS 压缩器。
- 或者让他们直接支持服务端 TS 编译。
- 继续使用 ES5 规范的 JS 代码编写脚本。
- 下载仓库的主支(
git clone
) - 打开 IDE,修改代码
- 提交到仓库(
git add
、git commit
、git push
)的新分支 - 提交 PR(
git merge
)
- 不推荐:如果改动很少而且你觉得不会导致合并问题,你可以直接提交到主支。