这边泛型推论疑问

这边泛型推论疑问

const defaultProps = transformToComponentProps(textDefaultProps);

为什么 defaultProps 推论出来的类型是

const defaultProps: {
    actionType: {
        type: any;
        default: string | number;
    };
    url: {
        type: any;
        default: string | number;
    };
    height: {
        type: any;
        default: string | number;
    };
    width: {
        type: any;
        default: string | number;
    };
    ... 23 more ...;
    backgroundColor: {
        type: any;
        default: string | number;
    };
}

type不应该是个函数?

default 应该是 string 或者是 number类型,这边为什么是联合类型?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好 

非常感谢你的问题

1 由于 ts 中泛型推论的限制,函数中的 Item 被推论成了 T[keyof T], 它的属性没发再被推论,所以就变成了 any

2 第二个 联合类型 就是 一种类型或一种类型的意思 并不是两个类型的结合,那种叫交叉类型。

  • 慕粉3946981 提问者 #1

    个人觉得 mapValues 这个函数的类型难以理解

    (alias) mapValues<T, {
        type: any;
        default: T[keyof T];
    }>(obj: T | null | undefined, callback: ObjectIterator<T, {
        type: any;
        default: T[keyof T];
    }>): { [P in keyof T]: {
        type: any;
        default: T[keyof T];
    }; } (+10 overloads)
    import mapValues

    并且泛型第二个参数 

    {
        type: any;
        default: T[keyof T];
    }

    这种写法我不理解什么意思。

    2022-11-23 16:44:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师