第二重隐私防护:隐私数据类型强制确认

你的餐厅会员注册系统里,"手机号"这个字段旁边有一个必选的确认框,上面写着"我已确认这不是菜品名称或桌号"。服务员不勾选,系统就不让提交——不可能无意识地把桌号填进手机号栏。

这正是 index.ts 的思路,只不过把确认框放在了更早的阶段——编译的时候就让错误写法报错,而不是等到运行时再检查:

// src/services/analytics/index.ts
export type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS = never

从代码上看,never 类型在 TypeScript 里相当于那个"必选确认框":把字段类型设为 never,没有任何字符串值可以合法赋给它,开发者必须手动加上一段"确认签名"才能通过编译:

// 错误写法:直接把文件路径传进去,编译报错
// command: someFilePath,   ← 编译器:这个字段不接受普通字符串

// 正确写法:必须手动加上"我确认过了"
command_type: 'git' as unknown as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS

这段超长的变量名就是那个确认框的文字——它很难打,你不可能无意识地写出来。每次写出这行代码,开发者都被迫停下来想一次:我传的这个值,真的不是代码或文件路径吗?

这个设计把验证责任从代码审查人(事后、主观)转移到了编译器(事前、强制)。