generic-3トップ2 generic
9983 ワード
TOC
2つの普通の
1.一つ屋根二つgeneric
jsまたはreactjsで役立つmap APIを知っていれば、
この点を直接実現することは可能である.
関数の汎用性のためにgenericのtypeScriptのmapを使う
どんな形になるか予想して
function map<T>(array:T[], f:(item:T)=>T):T[]{
let result=[];
for( let i=0; i< array.length; i++){
result[i]=f(array[i])
}
return result;
}
genericがまだ気まずいなら、こんな感じのコードが考えられるかもしれません.しかし、これは問題があります.
デフォルトではmapは関数を受信し、インデックスごとにコールバック関数を実行します.
適用された関数が返されます.
ただし、上のmap関数はcallback関数であり、以降の処理が完了すると
入力型T型を使用しています.すなわち,戻り値resultはTタイプである.
たとえば、このmap関数は上記のコードに適していません.
function map<T>(array:T[], f:(item:T)=>T):T[]{
let result=[];
for( let i=0; i< array.length; i++){
result[i]=f(array[i])
}
return result;
}
const lap=map(['a','b','c'],_=>_==='a');
console.log('lap: ',lap)
私が言いたいのはgenericを使う意味がないということです.
どうしようかな。🤷🏻♂️
解決策は1つの屋根に2つのgenericを使用することである.
コードを次のように変更します.
function map<T,U>(array:T[],f:(item:T)=>U):U[]{
let result=[];
for(let i=0;i<array.length;i++){
result[i]=f(array[i])
}
return result
}
問題を解決する方法はgenericを利用することではない.generic変数をもう一つ書きます.
コールバック関数によって処理される値は、Tタイプであってもよい.
違うかもしれません.ではgenericをもう一つ書けばいいです.
const lap=map(['a','b','c'],_=>_==='a');
console.log('lap: ',lap);
その後はこのように並んで返却します.
もちろん、地図で名前を付けることはできません.陰影を起こすので、悪い名前です.
要するに,このように2つのgenericを用いることを理解した.
もし何かが詰まっていたら、もう一つ書いたらどうですか.
Reference
この問題について(generic-3トップ2 generic), 我々は、より多くの情報をここで見つけました https://velog.io/@zerozoo-front/generic-3-한-지붕-두-genericテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol