You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何将函数类型应用到function关键字声明的函数上

TypeScript 目前没有提供直接给 function 关键字定义的顶层函数声明整体标注类型的语法,但有两种简洁的替代方案可以满足需求,不需要手动逐个标注参数和返回值类型。

方案1:使用带类型标注的变量接收函数表达式

你依然可以使用 function 关键字定义函数,只需要把它赋值给提前标注了 Add 类型的变量即可,TypeScript 会自动推导参数类型:

type Add = (x:number, y:number) => number

const add: Add = function(x, y) {
  return x + y
}

这种写法除了不具备函数提升特性之外,使用效果和普通函数声明完全一致,也支持 this、arguments 等函数专属特性。

方案2:使用声明合并保留函数提升特性

如果你必须使用顶层函数声明(比如依赖函数提升的特性),可以先通过 declare 声明变量类型,再实现函数,TypeScript 会自动合并两者的类型:

type Add = (x:number, y:number) => number

declare const add: Add
function add(x, y) {
  return x + y
}

这种写法下 add 具备普通函数声明的提升特性,同时参数 x、y 会被自动推导为 number 类型,返回值也会自动匹配 Add 类型的定义,TS 会自动检查实现是否符合类型要求。

两种方案都比逐个取 Parameters、ReturnType 的写法更简洁易维护,后续如果 Add 类型有修改,不需要同步修改函数的参数类型定义。

内容的提问来源于stack exchange,提问作者kimsagro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:54:03