angular - 打字稿:这个函数的主体在哪里定义,泛型真的被使用了吗?
问题描述
我正在查看Angular 的“AsyncPipe”的文档,我有点卡在第 26 行,其中调用了“ resolve ”函数:this.resolve !('hi there!');
任何人都可以回答以下问题:
- (A) 函数体在哪里定义?我尝试了代码并玩了一下,更改了参数的类型和数量,例如:
resolve(1, 'hello', true)
、 orresolve(1)
、 orresolve()
。在每种情况下,都会返回 FIRST 参数的值(在最后一种情况下它是一个空输出),但我在任何地方都看不到这样的函数定义。 - (B) 我看到在第 19 行
Promise
中定义了<string>
. 尽管如此,如 (A) 所示,我能够传递和返回字符串、数字、布尔值......也许我误解了这种输入应该做什么?
谢谢!
解决方案
这里有几件事要解决:
(A)resolve
是一个特定Promises
的函数reject
。它们是您的异步函数,用于确定如何处理结果 ( resolve
) 或错误 ( reject
)。该resolve
函数只返回第一个参数,如果您需要返回多个值,可以在一个对象中完成。
(B) Typescript 仅存在于 IDE/代码编辑器中,而不存在于运行时。运行时的 Typescript 被转译为 JavaScript,许多功能(包括泛型)在浏览器中丢失。泛型可以在开发代码时为您提供帮助,这样您就不会在字符串上运行 Number 函数或类似的想法。因此,当您开始运行 Angular 应用程序时,您将能够发送您想要的任何内容,但在开发过程中,如果类型不匹配,您的 IDE 应该会警告您(尤其是在您使用tslint
开发工具时)
推荐阅读
- ios - Swift 5、Alamofire、Combine、MVVM 抛出错误
- php - FPDF、FPDI、PDF 平铺:使用ImportedPage 放置?
- python - 撞球并在 PONG 中得分
- typescript - 如何优化 ts-loader 以减少解决问题的麻烦?
- shell - 用于打印单词和编号的 unix shell 脚本。以元音开头的单词
- reactjs - 如何使用 react-admin 构建分析仪表板?
- python - 即使在使用其他问题的答案后,列表也会更改另一个列表
- delphi - 列表框不显示对数据集所做的更改
- python - 为什么不可能从 Kivy 中的回调触发事件
- wordpress - 产品元数据作为 WooCommerce 中订单的订单项元数据