首页 > 解决方案 > 如何使用泛型传递任何类型?

问题描述

再会

尝试处理泛型

有2种

  1. TUserInfo
type TUserInfo = {
   id: num,
   readonly fname: string,
   readonly lname: string
}
  1. TBody
type TBody = {
   success: boolean,
   user?: any
}

告诉我如何将任何类型传递给TBody(例如,TUserInfo)。并且user应该具有相同的类型而不是any. 先感谢您

标签: javascripttypescript

解决方案


我认为在这种情况下最好使用有区别的工会:


export interface User {
    id: number,
    fname: string,
    lname: string
}

type Response<T> =
    | {
        success: true;
        user: T
    }
    | {
        success: false
    }

type Result = Response<User>

declare var result: Result

if (result.success) {
    result.user
} else {
    result.success // false
    result.user // error
}

我愿意打赌success如果false-user属性应该是ubdefined.

Resulttype 是非常流行的 monad。见Rust 结果F# 结果


推荐阅读