问答

为什么Promise<T> 这个写法可以代表Promise的resolve值是T

作者:admin 2021-07-15 我要评论

本人TS不是很懂,今天看到这样的代码 export type ServiceT, P extends any[] = (...args: P) = PromiseT; 对PromiseT 这个写法不是很理解。另外总觉得Ts里像这...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

本人TS不是很懂,今天看到这样的代码
export type Service<T, P extends any[]> = (...args: P) => Promise<T>;
对Promise<T> 这个写法不是很理解。另外总觉得Ts里像这种复杂的定义一眼很难理解,对代码的可读性是不是有些影响?

###

这叫泛型


我们来看一个 Promise 方法:

var options = {
    method: "POST"
    url: "/api",
    data: {
      id: 1
    }
};
fakeRequestAsync(options)
    .then((res) => {
        console.log(res.data);
    });

fakeRequestAsync 是一个 Promise 方法,它有参数 options,有 .then 的回调参数 res

再看 TS 声明:

Service<T, P extends any[]> = (...args: P) => Promise<T>

T 就是上面的 resP 就是上面的 options


Promive<T> 是 ES2015 自带类型,在 TS 标准库中就有。你可以在 VSCode 里按住 Ctrl+左键,点击这个类型,就能跳转到标准库的声明文件了,你可以看下微软是怎么声明它的。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 为什么Promise&lt;T&gt; 这个

    为什么Promise&lt;T&gt; 这个

  • php如何处理十几万的读写

    php如何处理十几万的读写

  • 箭头函数this?

    箭头函数this?

  • git 如何合并中间的 commit?

    git 如何合并中间的 commit?

腾讯云代理商
海外云服务器