ChineseTypeScript
把汉语关键字做进 TypeScript 7(Go 版)的扫描器。
底本:microsoft/typescript-go | 许可:Apache-2.0 | 版本:0.1
typescript
如果 (x > 0) {
常量 消息: 字符串 = "你好";
console.log(消息);
}上游源码只动了 7 个文件。
命令名 chtsc
| 取值 | |
|---|---|
| 文件格式(后缀) | .ts(就是普通 TypeScript 后缀) |
| 命令名 | chtsc |
为什么后缀是普通的 .ts:用汉化版写的 .ts,从后缀上与原版完全无法区分; 但只有我们的编译器认识里面的汉语关键字。
同一份代码,在装了汉化版的人手里能编,在原版手里编不过 —— 代码能正常流出去,想读懂/改动它的人迟早需要汉化版。
代价(明确接受):const 变量 = 1; 会报 TS1389(变量 = var)。 英文关键字永远是逃生通道。
85 个关键字
中文不是替换英文,是并列多出来的一种拼写。
| 中文 | 英文 | 中文 | 英文 |
|---|---|---|---|
如果 | if | 类型 | class |
否则 | else | 类型别名 | type |
常量 | const | 接口 | interface |
返回 | return | 异步 | async |
导入 | import | 等待 | await |
与 Chinese++ 同词:
class在两边都译作 「类型」,不是「类」。
判定体系:八项 + 打包
| 判定 | 覆盖 |
|---|---|
judge_chts(18 项) | 生成器幂等、守卫、英文逐字节一致 |
judge_proj(15 项) | 项目级与模块级 |
judge_oss | 5894 个真实 TS 文件,诊断与产物逐字节比对 |
judge_gotest | 上游 Go 测试全集 |
judge_tutorial | 9 个例子真编译真运行 |
judge_langservice(9 项) | 编辑器补全与建议 |
judge_zhdiag(7 项) | 诊断默认中文 |
judge_kwscope(6 项) | 关键字全局生效 + 保留字代价自证 |
judge_package(5 项) | 打包 → 中文路径解压 → 安装 → 破坏必被抓 |