首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单行typescript语法是如何工作的

单行typescript语法是如何工作的
EN

Stack Overflow用户
提问于 2019-02-02 17:31:39
回答 2查看 967关注 0票数 2

(我对node、es6和typescript相当陌生。这是我实际正在开发的第一个应用程序)我有以下代码,我试图在typescript中引用这些代码来连接到dynamodb,但我无法理解语法的通用部分:

我试着研究了typescript和es6语法,但没有任何有用的东西。

代码语言:javascript
复制
  public readonly getItem = async (
tableName: string,
key: AttributeMap
): Promise<AttributeMap | null> =>
  this.dynamodbGet({
    TableName: tableName,
      Key: key
   }).then(({ Item }) => (Item !== undefined ? Item : null));

我不能理解这部分代码的语法

代码语言:javascript
复制
 : Promise<AttributeMap | null> =>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-02 17:40:53

您应该阅读有关联合类型和here中的可空类型的章节。

基本思想是,在默认情况下,strictNullChecks类型不能包含值null,您需要显式地声明一些可能为null的内容。因此,Promise<AttributeMap | null>意味着promise可能返回AttributeMapnull,您需要检查结果以确定是哪一个(请参阅类型保护,也可参阅here)

票数 3
EN

Stack Overflow用户

发布于 2019-02-02 17:38:38

这是类的一部分。它定义了类实例上的箭头方法。它使用与this proposal不同的TypeScript实现的类字段。与JavaScript的其余语法差异是类型。Promise<AttributeMap | null>表示一个函数返回AttributeMap | null类型的promise;所有async函数都是按照设计返回promise的。

TypeScript将编译成的ES6副本将如下所示:

代码语言:javascript
复制
constructor() {
 this.getItem = (tableName, key) => {
   return this.dynamodbGet({ TableName: tableName, Key: key })
   .then(({ Item }) => (Item !== undefined ? Item : null));
 };
}

这里使用async是不合理的,因为该函数使用原始的promises,并且不能从await语法中获益。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54491724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档