typeScript 函数怎么根据参数对象中的布尔值状态返回具体类型?

头像
ZZS
    31
    内蒙古呼和浩特市
    新手上路,请多包涵

    问题描述

    test函数无法根据参数对象中的布尔值状态返回具体类型

    相关代码

    interface Result {
        isSuccess: boolean
    }
    
    interface Success {
        success: string
    }
    
    interface Error {
        error: string
    }
    
    function test(result: Result = { isSuccess: true }): Success
    function test(result: Result = { isSuccess: false }): Error
    function test(result: Result): unknown {
        const success: Success = {
            success: '成功'
        }
        const error: Error = {
            error: '失败'
        }
        return result.isSuccess === true ? success : error
    }
    

    你期待的结果是什么?

    我希望能够 isSuccess 为真的时候返回 Success 为假的时候返回 Error

    阅读 1.6k
    1 个回答

    不能直接用 Error 当 interface,给你改了下名字

    interface Result {
        isSuccess: boolean
    }
    
    interface Success {
        success: string
    }
    
    interface IError {
        error: string
    }
    
    function test(result: { isSuccess: true }): Success
    function test(result: { isSuccess: false }): IError
    function test(result: Result): Success | IError {
        const success: Success = {
            success: '成功'
        }
        const error: IError = {
          error: '失败'
        }
        return result.isSuccess === true ? success : error
    }

    在线运行地址

    推荐问题
    logo
    Microsoft
    子站问答
    访问
    宣传栏