小编Ren*_*ler的帖子

返回缩小类型的打字稿解决方法

在 typescipt 中,我需要一种方法,让函数在给定特定类型的参数的情况下返回与参数类型相关的类型的对象。

请参阅下面的示例。我需要一种方法来使 'const response = ...' 的类型更窄。

下面的示例用于将特定类型的请求链接到仅与给定请求相关的响应。例如,给定一个查找用户信息的请求,我们想要一个包含他们的姓名和年龄的响应。但是,当收到查找汽车信息的请求时,我们希望得到有关汽车品牌和里程信息的响应。我们只想对“用户”请求使用“用户”响应,对“汽车”使用类似的响应。

class RequestBase {
}

class ResponseBase {
}

interface IFindUserReq {
    user_id :string
}
class FindUserRequest implements IFindUserReq {
    user_id :string
    constructor(user_id) {
        this.user_id = user_id
    }
}

interface IFindUserRes {
    name :string
    age  :number
}
class FindUserResponse implements IFindUserRes {
    name :string
    age  :number
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
}

interface IFindCarReq {
    car_id :number
}
class FindCarRequest implements IFindCarReq {
    car_id :number 
    constructor(car_id) …
Run Code Online (Sandbox Code Playgroud)

typescript

6
推荐指数
1
解决办法
822
查看次数

定义选取键的联合类型

给定一个接口,例如:

interface A {
    AA : string
    AB : number
}
Run Code Online (Sandbox Code Playgroud)

我想要一个类型,它是每个可能选择的类型的联合,例如:

type B = Pick<A, "AA"> | Pick<A,"AB"> 
Run Code Online (Sandbox Code Playgroud)

或者,如果不熟悉 Pick:

type B = {AA: string} | {BB : number}
Run Code Online (Sandbox Code Playgroud)

我不想像上面那样手动写出来。我希望能够编写某种通用类型或函数来为我做这件事,例如

type B = OneOf<A>
Run Code Online (Sandbox Code Playgroud)

如何编写“OneOf”,或者打字稿中最接近的当前近似值/解决方法是什么?

typescript

4
推荐指数
1
解决办法
2288
查看次数

标签 统计

typescript ×2