日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ngrx Store实现源代码的MemoizedSelector学习笔记

發布時間:2023/12/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ngrx Store实现源代码的MemoizedSelector学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義一個類型AnyFn,代表任意的函數:

export type AnyFn = (...args: any[]) => any; let a: AnyFn;a = (data) => console.log(data);a('Jerry');a = 1; // 語法錯誤

上面代碼將1賦給a,會引起編譯錯誤,因為1的類型是number.

定義一個MemoizedProjection類型:

export type MemoizedProjection = {memoized: AnyFn;reset: () => void;setResult: (result?: any) => void;clearResult: () => void; };

定義一個變量,類型為MemoizedProjection:

let a: MemoizedProjection;let b = (data) => console.log(data);a.memoized = b; a.reset = () => console.log('reset'); a.setResult = (result) => console.log(result); a.clearResult = () => console.log('clear');

上述代碼執行會報錯誤:

Uncaught TypeError: Cannot set property ‘memoized’ of undefined:

下圖29行,尖括號里的T不能換成any. any不能出現在類型參數的位置里。如果表示任意類型,不出現在類型參數的位置,可以用any.

Generic type ‘MemoizedSelector<State, Result, ProjectorFn>’ requires between 2 and 3 type arguments.

interface里添加method:

看個Spartacus的例子:一個函數除了本身的實現之外,還多了4個屬性,分別指向4個另外的函數:

memoizedProjector構造完畢:

通過下面這個方法構造的:

Object.assign. 該方法會把輸入參數的各個對象的屬性做一個合并:

更多Jerry的原創文章,盡在:“汪子熙”:

總結

以上是生活随笔為你收集整理的Ngrx Store实现源代码的MemoizedSelector学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。