38_1

TS 练习题38道的第一题

  1. 定义一个User类型
    type User = {
        id: name,
        king: string,
    }

    function  makeCustomer<T extends User>(u: T): T {
        return {
            id: u.id,
            king: "customer",
        }
    }
  • 以上代码报错的原因是?
    makeCustomer中的T继承于User类型,但是T还可以是其它类型,函数makeCustomer的返回值是T, 函数返回的是User类型,与T类型要求不符。
// 第一种方法:修改函数返回类型为User。

function makeCustomer<T extend User>(u: T): User {
    return {
        id: u.id,
        king: "customer",
    }
}

// 第二种方法:修改函数返回表达式,使其符合函数返回类型T

function makeCustomer<T extends User>(u: T): T {
    return {
        ...u,
        id: u.id,
        king: "customer",
    }
}

// 看了github上其它回答,有一个就是不写函数返回类型T,让函数自己推断返回类型。
posted @ 2023-02-06 22:16  feishi312  阅读(24)  评论(0)    收藏  举报