[英]Assessing a Function's Argument Types From Tuple
我正在嘗試使用元組類型作為 function 參數的類型。
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
如果未指定類型注釋並且無法推斷出任何類型,則參數將具有類型any
。
對於 rest 參數,寫為...parameter
,如果沒有指定類型注釋並且無法推斷出任何類型,則...parameter
將具有類型any[]
。
因此,在
type T_b = (...T_b_arguments) => boolean
T_b_arguments
不是指類型,而是any[]
類型的 rest 參數的名稱
要更正此問題,您必須命名參數並應用類型注釋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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.