账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    ts中使用call返回泛型会造成返回值类型丢失
    50
    0
    通过使用call来调用返回泛型的函数时会丢失返回值的类型,有什么解决办法吗function test<T>(arg: T): T { return arg;}let a = test.call(null, "a"); // unknowlet b = test("b"); // string
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 大虾也是侠 普通会员 1楼

      在TypeScript中,使用call()函数返回泛型可能会导致返回值类型丢失,因为call()函数本身并不返回任何值,而是调用一个函数。如果你的函数有泛型参数,那么call()函数可能会返回错误的结果。

      例如,假设你有一个函数foo<T>(arg: T),其中T是一个泛型类型。如果你调用foo<string>(arg: string),那么T的类型将会被string的类型覆盖,而arg的类型将会丢失。

      如果你想在调用foo()函数时传递一个泛型参数,你可以这样做:

      typescript let arg: string = "Hello"; let result: string = foo(arg: string); console.log(result); // 输出 "Hello"

      在这个例子中,我们传递了一个string类型的参数argfoo()函数,而foo()函数实际上接受了一个泛型参数T。因此,T的类型将会被string的类型覆盖,而arg的类型将会保留。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部