当前位置: 首页 > 知识库问答 >
问题:

如何将析构赋值和可选链接结合起来?

淳于开畅
2023-03-14

我有一个带有一些可选字段和该类型变量的TypeScript接口:

interface Foo {
    config?: {
        longFieldName?: string;
    }
}

declare let f: Foo;

我想将longfieldname放入同名变量中。

const { longFieldName } = f.config;
     // ~~~~~~~~~~~~~  Property 'longFieldName' does not exist on type '{ longFieldName?: string | undefined; } | undefined'.
const longFieldName = f?.config.longFieldName;  // OK, type is string | undefined

共有1个答案

东方智敏
2023-03-14

如果f?.config表达式计算为undefined,则使用短路计算获取回退值(空对象):

const { longFieldName } = f?.config || {};
 类似资料:
  • 假设存在包含方法的接口: 实现combinedCall方法的最佳方法是什么: 从makeHttpCall获取数据 使用store InDatabase存储它 返回在store InDatabase完成时完成的完成? 似乎在RxJava 1.0中可以执行Completable.merge(可观察),但合并似乎不再接受可观察。

  • 我刚刚将更新为,我正在尝试编辑我的代码。 现在有可用的功能吗?

  • Usecase:使用EventTime并从Kafka的记录中提取时间戳。 我想要的是:Flink提取时间戳并在初始间隔(例如20秒)内为每条记录发出水印,然后它可以周期性地发出水印(例如每10秒)。 原因:如果我使用PeriodicWatermark,开始时Flink只会在一段时间间隔后发出水印,并且我的第一个窗口(5分钟)中的计数是错误的-比后续窗口中的计数大得多。我有一个解决办法,将自动水印间

  • 我已经检查的内容: 我曾考虑用QueryDSL生成SQL查询字符串,并在MyBatis中使用它的'@SelectProvider'注释,但这似乎是一个死胡同:MyBatis在它的SQL字符串中需要“${xxx}”的东西,但QueryDSL只生成基于实际Java类型的查询,所以它甚至对ID也不起作用。 作为querydsl/jooq的替代方案的mybatis生成器:相当糟糕的替代方案,因为它实际上生

  • 我在UCF-101数据集上训练了SVM、CNN和ANN,SVM和ANN分别使用Hue和LBP特征的CSV文件,而CNN使用LBP图像进行分类训练。现在我想结合{SVM和CNN}和{ANN和CNN}。可以这样做吗?如果可以,怎么做。 我已经为Dataset中的每个视频提取了第1关键帧,然后计算了它的LBP直方图。将其用作图像的特征,将其连同标签一起写入csv(我在101个可用的类中只选择了5个类的数

  • 我是编程新手,正在使用Python学习更复杂的数据结构,我发现很难理解使用头和尾向链表添加元素的概念。 关键是当我添加第一个元素时,一切都清楚了。由于head一开始是None,它将向tail和head添加新节点。当我添加第二个元素时,问题就开始了:我不明白为什么第二个元素会与当这行代码self时_尾执行next=newNode。在这行代码之后,成为第二个元素,这似乎很符合逻辑,因为我必须在不断添加