从元组评估函数的参数类型
Assessing a Function's Argument Types From Tuple
我正在尝试使用元组类型作为函数参数的类型。
type T_a = (a1: string, a2: number) => boolean
const a: T_a = (a1, a2) => a1.length >= a2
type T_b_arguments = [number, string]
type T_b = (...T_b_arguments) => boolean
const b: T_b = (b1, b2) => b1 < b2.length
// Example:
b(1, 'mystring) // true
我该怎么做?
函数的形式参数定义为 parameter_name
后跟一个可选的类型注释。即name
或name: type annotation
如果未指定类型注释且可以推断出 none,则参数的类型将为 any
。
在剩余参数的情况下,写成 ...parameter
,如果没有指定类型注释并且可以推断 none,...parameter
将具有类型 any[]
。
因此,在
type T_b = (...T_b_arguments) => boolean
T_b_arguments
不是指类型,而是类型 any[]
的剩余参数的名称
要更正此问题,您必须命名参数并应用类型注释,T_b_arguments
type T_b = (...args: T_b_arguments) => boolean
请注意,...
语法不适用于参数类型,而是应用于参数名称。
这是完整的工作代码
type T_a = (a1: string, a2: number) => boolean
const a: T_a = (a1, a2) => a1.length >= a2
type T_b_arguments = [number, string]
type T_b = (...args: T_b_arguments) => boolean
const b: T_b = (b1, b2) => b1 < b2.length
b(1, 'mystring') // true
我正在尝试使用元组类型作为函数参数的类型。
type T_a = (a1: string, a2: number) => boolean
const a: T_a = (a1, a2) => a1.length >= a2
type T_b_arguments = [number, string]
type T_b = (...T_b_arguments) => boolean
const b: T_b = (b1, b2) => b1 < b2.length
// Example:
b(1, 'mystring) // true
我该怎么做?
函数的形式参数定义为 parameter_name
后跟一个可选的类型注释。即name
或name: type annotation
如果未指定类型注释且可以推断出 none,则参数的类型将为 any
。
在剩余参数的情况下,写成 ...parameter
,如果没有指定类型注释并且可以推断 none,...parameter
将具有类型 any[]
。
因此,在
type T_b = (...T_b_arguments) => boolean
T_b_arguments
不是指类型,而是类型 any[]
要更正此问题,您必须命名参数并应用类型注释,T_b_arguments
type T_b = (...args: T_b_arguments) => boolean
请注意,...
语法不适用于参数类型,而是应用于参数名称。
这是完整的工作代码
type T_a = (a1: string, a2: number) => boolean
const a: T_a = (a1, a2) => a1.length >= a2
type T_b_arguments = [number, string]
type T_b = (...args: T_b_arguments) => boolean
const b: T_b = (b1, b2) => b1 < b2.length
b(1, 'mystring') // true