猿问

通用类型“ReturnType”需要 1 个类型参数。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)

on的错误ReturnType<typeof toObject, Keys>


如何在保留相同功能的同时减少 1 个类型参数?Flow 似乎没有替代品$Call。


鸿蒙传说
浏览 576回答 1
1回答

动漫人物

ReturnType<T>只接受一个类型参数,即函数类型。在您的情况下,函数类型是typeof toObject.&nbsp;整个 TypeScript 表达式将是ReturnType<typeof toObject>并且将解析为,any因为您返回的是 的结果,该结果是在您的代码reduce中键入的。any
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答