V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
iwasthere
V2EX  ›  问与答

向大家请教 TypeScript 的问题

  •  
  •   iwasthere · Dec 7, 2021 · 1228 views
    This topic created in 1612 days ago, the information mentioned may be changed or developed.

    问题如下:

    
    export const getMaterialListGrades = (params:{numStr:string,version:string})=>{
    
        return request('/api', {
            method: 'GET',
            params:params
        });
    
    }
    
    
    ts 目前已经推断出返回值是一个 Promise any 的类型,请问如何才能详细的定义返回的结构?

    已谷歌搜索相关答案,但没找到,可能是关键字不对,谢谢大家!

    10 replies    2021-12-07 15:55:40 +08:00
    thefack
        2
    thefack  
       Dec 7, 2021   ❤️ 1
    改成这样的,在方括号中间定义返回值的类型:
    export const getMaterialListGrades =function (params:{numStr:string,version:string})[:Promise<any>]{

    return request('/api', {
    method: 'GET',
    params:params
    });

    }
    LancerComet
        3
    LancerComet  
       Dec 7, 2021   ❤️ 1
    const getMaterialListGrades = (params: {...}): Promise<Something> => request({ ... })

    让 request 支持泛型最好

    const getMaterialListGrades = () => request<Something>({ ... })
    shakaraka
        4
    shakaraka  
    PRO
       Dec 7, 2021
    返回 Promise<any>没错呀。因为你没确定这个 any 里面的东西。

    这样就能知道返回的是什么

    https://s2.loli.net/2021/12/07/3myPk7VWJMpnlU9.png
    iwasthere
        5
    iwasthere  
    OP
       Dec 7, 2021
    @yuhangch 谢谢解答,这种方法的话需要改造 request ,场景不是很合适,后面的回答解决了
    iwasthere
        6
    iwasthere  
    OP
       Dec 7, 2021
    @wunonglin 对,我就是项定义这个 any
    shakaraka
        7
    shakaraka  
    PRO
       Dec 7, 2021
    不知道你这个 request 是哪来的,如果是 axios 的话,他是支持泛型的,你自己二次包装也需要按我发的图那样把泛型给定义好。实在不行就直接断言,只不过这样体验很烂而已
    iwasthere
        8
    iwasthere  
    OP
       Dec 7, 2021
    @wunonglin 嗯,是个好提议,谢谢
    shakaraka
        9
    shakaraka  
    PRO
       Dec 7, 2021
    可以这么干,不管 request 返回的是什么妖魔鬼怪,统一在 func 返回 Promise<Material>即可,func 里面的就直接断言 Promise<any>或者直接 any ,这不影响 func 返回的类型

    https://s2.loli.net/2021/12/07/Ulw4RxIKTGrJ5tM.png
    iwasthere
        10
    iwasthere  
    OP
       Dec 7, 2021
    @wunonglin 哈哈,可以,看了你的代码又学了一招,谢谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5837 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 02:43 · PVG 10:43 · LAX 19:43 · JFK 22:43
    ♥ Do have faith in what you're doing.