たわごとをパイプする

Susan Sarandon
Susan Sarandonオリジナル
2024-12-08 01:40:11639ブラウズ

Pipe the shit

この記事についてはたくさんのアイデアがありますが、どこから始めればよいかわかりません。コードを読みやすくし、ツリーシェイキングを使用することに興味がある場合は、ぜひこの記事をチェックしてください。

JavaScript を使用して開発したことがある場合は、おそらくこのタイプのコードに遭遇したことがあるでしょう。

const someInstance = new Class();
someInstance.do('jump').some().thing('dance').and().read();

このスタイルはとても読みやすく、何がつながっているのかがわかるので気に入っています。さらに、データはすべてインスタンスに保存されるため、ある関数から別の関数にデータを移動する必要はありません。

これは関数が非同期でない場合にのみ機能するという事実に加えて、別の問題があります。コンテンツを使用していない場合、コンテンツをツリーシェイクするのは簡単ではありません。これをクライアントで使用する場合、接続されているすべての関数を含むライブラリ全体を移動する必要があり、大きなオーバーヘッドになります。

それでは、どうすれば内容を読みやすくし、非同期関数を使用して Vite などを操作できるようにするにはどうすればよいでしょうか。未使用のコードをすべてツリーシェイクしますか?

答えは見出しの中にあります:「パイプ」。

機能の観点から見ると、パイプの実装は非常に簡単です。ただし、このタイプには課題がありました。すべてをライブラリにまとめて npm で公開しました。パイプして組み合わせます。

const inc = (by: number) => (x: number) => x + by;
const dec = (by: number) => (x: number) => x - by;
const multiplyBy = (by: number) => (x: number) => x * by;
const divideBy = (by: number) => (x: number) => x / by;
const toStr = () => (x: number) => x.toString();

// prepare the pipeline
const pipeline = pipe(inc(2), multiplyBy(7), dec(7), divideBy(3), toStr())

// Executing the pipeline
pipeline(7)

利点の 1 つは、オブジェクトに関連付けられていないため、入力と出力が前後の関数と一致する限り、任意の関数を使用できることです。

私が挙げた例は非常に単純ですが、少なくともすべてをパイプすることができます。チェーンやクラスと同じオプションがあります。ジェネリック関数は少し難しいかもしれませんが、解決策はあります。これについては、別の記事で詳しく説明します。

以上がたわごとをパイプするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。