函数类型是 Kotlin 里"接口的替代品"——() - Unit比interface Callback { fun onDone() }短得多,而且能享受函数类型带来的语言特性(泛型、型变、空安全、默认值)。typealias则解决另一个痛点:(User) - Boolean这类签名在项目里反复出现,长且难读。两者一起答,正是"用 Kotlin 的语言特性而不是绕着写"的信号。先把结论放在前面:函数类型FunctionNP1..Pn, R的本质是接口——() - Unit对应Function0Unit、(Int) - String对应Function1Int, String,都有invoke方法。所以函数类型可以做变量、可以传参、可以返回(函数类型的字段不带invoke括号才是"函数引用",带括号就是调用)。typealias是纯编译期别名,展开后没有任何类型检查加成——它只改善可读性,不改变类型系统。这两条边界是本篇的核心:函数类型有语言级能力,typealias 没有。机制拆解先看函数类型的实现。(Int) - St