多参数函数能否复用同一份参数类型定义避免重复声明?
解决方案
完全可以实现,有两种常用的简洁实现方式,你示例中的类型定义语法和泛型调用写法只需做小幅调整即可,正确实现如下:
方式1:抽离公共参数元组类型
先把重复的参数定义为带标签的元组类型:
// 定义公共参数类型 type CommonParams = [x: number, y: number] // 函数直接使用该类型作为入参 function add(...args: CommonParams) { return args[0] + args[1] } function subtract(...args: CommonParams) { return args[0] - args[1] } // 调用方式和原来完全一致 add(1, 2) subtract(5, 3)
方式2:抽离公共函数类型签名
如果多个函数的入参和返回值类型都一致,可以直接定义公共的函数类型:
// 定义通用的二元数值计算函数类型 type BinaryNumberFn = (x: number, y: number) => number // 直接用该类型约束函数,参数和返回值类型会自动推导 const add: BinaryNumberFn = (x, y) => x + y const subtract: BinaryNumberFn = (x, y) => x - y
补充说明
你示例中写的add<common>()属于泛型调用语法,是用来指定函数泛型参数的,不属于参数类型复用的常规写法,上述两种方式已经可以完全满足避免重复定义参数类型的需求。
内容的提问来源于stack exchange,提问作者A. L
相关产品推荐
相关产品推荐

