在 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) 给定一个接口,例如:
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 ×2