看到一个interface的声明,非常复杂:
interface PromiseLike<T> {
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): PromiseLike<TResult1 | TResult2>;
}
1、这个很难看懂,请问一下,应该如何学习这个定义呢?
是否可以拆分一点一点地学到它的含义?
2、需要带着什么样的思路才能去看懂,从想要定义它的目的去阅读吗?
最简单的方法是,写实际的例子去进行对比,当然前提是熟悉 promise 怎么使用
学习这个PromiseLike<T>
接口的定义时,可以将其拆分为几个部分来理解:
interface PromiseLike<T>
表明这是一个接口,它接受一个泛型参数T
,这个T
代表了Promise
解析成功时返回的值类型。then
,这是Promise
和类Promise
对象的核心方法之一。then
方法的签名相对复杂,因为它涉及到泛型的条件类型(TResult1 = T, TResult2 = never
)以及多个可选参数(onfulfilled?
, onrejected?
)。参数说明:
onfulfilled
:当Promise
成功解析时调用的函数,该函数可以返回一个新的值(TResult1
类型)或一个新的PromiseLike<TResult1>
对象。onrejected
:当Promise
被拒绝时调用的函数,该函数可以返回一个新的值(TResult2
类型)或一个新的PromiseLike<TResult2>
对象。then
方法返回一个PromiseLike<TResult1 | TResult2>
,即根据onfulfilled
或onrejected
的返回值类型,返回一个新的PromiseLike
对象。PromiseLike<T>
,其目的是提供一个与Promise
类似行为的类型定义,允许非Promise
对象也能拥有链式调用.then()
的能力。分步骤解析:
T
的作用,即它代表什么。Promise
的基本工作原理,特别是.then()
方法的行为,对于理解PromiseLike<T>
接口至关重要。PromiseLike<T>
接口的对象,并模拟其.then()
方法的行为。通过上述步骤,你可以逐步深入理解复杂接口的定义,并能够在自己的项目中灵活应用。
有看到过定义比较复杂的泛型类型: 请问下,为何需要定义这么多或的Type呢? 为何不直接定义: 为何需要把这些风马牛不相及的类型(T, Promise, Record)组在一起?
在TypeScript 定义一个格式化的字符串,需要按照如下的``方式包裹定义: 打印结果符合预期: 但是我觉得这样不是很好看,我想要类似:这样定义: 但是打印会多出上下两个换行: 我们知道在python中可以有三个引号的方式进行定义复杂字符串: 但是在TypeScript如何实现呢?
About July的新书《编程之法:面试和算法心得》纸质版在本github上的基础上做了极大彻底的改进、优化,无论是完整度、还是最新度、或质量上,都远非博客、github所能相比。换言之,新书《编程之法》的质量远高于博客、github。 此外,散落在网上其他任何地方的“编程之法”电子材料均是盗版自本github,更无质量可言。所以,July只唯一推荐《编程之法》纸质版。 《编程之法》纸质版已于2
作为对《Heterogeneour Computing with OpenCL 2.0 (Thrid Edition)》英文版的中文翻译。 本书将介绍在复杂环境下的OpenCL和并行编程。这里的复杂环境包含多种设备架构,比如:多芯CPU,GPU,以及完全集成的加速处理单元(APU)。在本修订版中将包含OpenCL 2.0最新的改进: 共享虚拟内存(Shared virtual memory)可增强
Elixir,[ɪ’lɪksər],意为灵丹妙药、圣水,其logo是一枚紫色水滴。 Elixir是一门建立在Erlang虚拟机上的函数式系统编程语言,支持元编程。 创始人José Valim是ruby界的知名人士。 可以把Elixir看作函数式的ruby语言,或者是语法类似ruby的Erlang。 Elixir受瞩目的主要原因,是因为它较好地结合了Erlang编程语言的各种优点,以及ruby那样简
本教程主要围绕 GitBook 的安装,使用,集成,书籍发布,个性化以及实用插件几个方面。 其中借鉴了一些官方的文档以及在互联网上找到的一些内容,主要结合个人经验写成。由于经验有限,难免存在诸多疏漏或者理解不到位的地方,还请斧正! 注意:由于我已经很久没有使用 GitBook 了,GitBook 更新非常快,所以教程中提到的一些插件很可能已经不能正常使用了,特别是 multipart 插件。