簡體   English   中英

通用類型“ReturnType”需要 1 個類型參數。ts(2314)

[英]Generic type 'ReturnType' requires 1 type argument(s).ts(2314)

我最近從 Flow 轉移到了 Typescript,在轉換一些代碼庫時,我遇到了幾個錯誤,大多數都被記錄或替換為 Utility-Types 包,但是我找不到幫助我使用以下代碼的文檔或答案。

const toObject = (keys: { reduce: (arg0: (object: any, key: any) => any, arg1: {}) => void }) =>
  keys.reduce((object: any, key: string | number) => {
    const o = object;
    o[key] = undefined;

    return object;
  }, {});



export type Pick<
  Origin extends Record<string, any>,
  Keys extends ReadonlyArray<keyof Origin>
> = $ObjMapi<ReturnType<typeof toObject, Keys>, <Key>(k: Key) => $ElementType<Origin, Key>>;

export type TypeOrVoid = <T>(arg0: T) => T | void;

export type Diffable<O extends {}> = $ObjMap<O, TypeOrVoid>;

更具體地說, Generic type 'ReturnType' requires 1 type argument(s).ts(2314)的錯誤Generic type 'ReturnType' requires 1 type argument(s).ts(2314) on ReturnType<typeof toObject, Keys>

如何在保留相同功能的同時減少到 1 種類型的參數? Flow $Call似乎沒有替代品。

ReturnType<T>只接受一個類型參數,即函數類型。 在您的情況下,函數類型是typeof toObject 整個 TypeScript 表達式將是ReturnType<typeof toObject>並且會解析為any因為您返回的是reduce的結果,該結果在您的代碼中被輸入為any

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM