[TypeScript]ジェネリック関数
引数や返り値の型を可変にする
function getLastValue<T>(array:T[]):T{ return array[array.length-1]; } const numbers:number[] = [1,2,3,4,5]; const strings:string[] = ["A","B","C","D"]; console.log(getLastValue(numbers)); console.log(typeof getLastValue(numbers)); console.log(getLastValue(strings)); console.log(typeof getLastValue(strings)); console.log(getLastValue<number>(numbers));//型推論に頼らず明示的に返り値の型を指定する場合 console.log(typeof getLastValue<number>(numbers));
出力
5 number D string 5 number
引数が複数
function getPairArray<T,U>(first:T,second:U):[T,U]{ return [first,second]; } const pair1 = getPairArray(1,"A"); const pair2 = getPairArray(2,3); console.log(pair1); console.log(pair2);
出力
[ 1, 'A' ] [ 2, 3 ]
デフォルト型を指定
function getPairArray<T = number,U = string>(first:T,second:U):[T,U]{ return [first,second]; } const pair1 = getPairArray(1,"A"); const pair2 = getPairArray(2,3); const pair3 = getPairArray("B",4); console.log(pair1); console.log(pair2); console.log(pair3);
デフォルト型を指定しても型推論が優先される
[ 1, 'A' ] [ 2, 3 ] [ 'B', 4 ]