为了达到某种表达目的而做出的复杂、费力、不自然的语言或思想努力。
- 米沃什说的语言体操:
“我想说‘存在的内在必然性’,但波兰语没有合适的词,只能绕一大圈去解释。”
- TypeScript 的类型体操:
“我想在类型系统里推导出一个联合类型的差集,但 TypeScript 没有直接语法,只能写一堆 infer + 条件类型实现。”
两者的“体操感”非常像:优雅又痛苦,巧妙但拧巴。
都意味着“在一种限制性系统(语言 / 类型系统)内,为了表达复杂思想而做出的高难度操作”。
比如米沃什在《Widzenia nad Zatoką San Francisco》中提到:
“一个人必须做很多的体操(gimnastyki),才能用波兰语很好地表达某些抽象概念。”
这句话的意思是:
由于波兰语缺乏现成的哲学词汇体系,说话者必须在语言上做很多“弯曲扭转”——比如发明新词、重新定义旧词、用绕弯的句子解释一个概念——才能表达出复杂的思想。
所以,这里的“体操”指的是一种语言上的挣扎和技巧性的变通。
它强调表达上的“费劲”“迂回”“不得不想尽办法”的感觉。
TypeScript 中的“类型体操”
在 TS 社区里,“类型体操”这个说法来自日语/中文开发圈的戏称,指的是:
在 TypeScript 的类型系统中,利用泛型、条件类型、推断(infer)、映射类型等机制,写出非常复杂甚至“体操般高难度”的类型推导逻辑。
比如写出这样的类型:
type DeepReadonly<T> = { readonly [K in keyof T]: T[K] extends object ? DeepReadonly<T[K]> : T[K] };
这就是在“做类型体操”——你要反复“翻转”“嵌套”“推断”才能得到想要的类型结果。
它形容的是一种在类型系统内部做复杂技巧动作的行为。