関数の型定義と呼び出しシグネチャーの例として、以下のrest parameterのコードを例にしてみます。
https://isehara-3lv.sakura.ne.jp/blog/2023/06/15/rest-parametertypescript/
// using call signature以下が呼び出しシグネチャーで書き換えてみたものですが、re_tに型情報をsrで与えているので、型のアノテーションが不要になりますから、型定義と関数の実態の分離といっても良さそうです。
// rest parameter (type safe compared to arguments method)
function sumRest(message: string, ...numbers: number[]):[string, number]{
return [message, numbers.reduce((total, n) => total + n, 1)]
}
let res: [string, number] = sumRest('sum :', 1, 2, 3, 4, 5)
console.log(res[0], res[1] )
// using call signature
type sr = (message: string, ...numbers: number[]) => [string, number]
let re_t:sr = (message, ...numbers) => [message, numbers.reduce((total, n) => total + n, 1)]
console.log(re_t('call signature', 1, 2, 3, 4, 5))
実行結果:戻りは配列表記のままになってますが、
[ 'call signature', 16 ]
admin