網站搜尋

在 Typescript 中聲明一個泛型函數並將箭頭函數賦值給它


我正在嘗試編寫一個範本函數,它是一個箭頭函數,並將它指派給一個 const 變數,

這應該是以下格式 const method: MethodType<T>=<T>(...) => { ... }

但是當我嘗試輸入變數 method 時,它會抱怨。以下是程式碼片段:

export type KeyMethod<T> = (data: T) => any;

export interface DiffResult<T> {
    additions: T[];
    updates: T[];
    deletes: T[];
};

export type DiffMethod<T> = (oldState: T[], newState: T[]) => DiffResult<T>;

                     it complains about this template
                                   vvv
export const diffMethod: DiffMethod<T> = <T>(oldState: T[], newState: T[]) => {
    return {
        additions: [],
        updates: [],
        deletes: []
    }
};

有什麼方法可以做到這個嗎?也許我沒有跟上語法,但我還沒找到類似的例子。

答案#1

正如 Nitzan Tomer 在評論中暗示的,你應該像下面這樣寫。

export interface DiffResult<T> {
  additions: T[];
  updates: T[];
  deletes: T[];
}

export type DiffMethod = <T>(oldState: T[], newState: T[]) => DiffResult<T>;

export const diffMethod: DiffMethod = <T>(oldState: T[], newState: T[]) => {
  return {
    additions: [],
    updates: [],
    deletes: []
  };
};