首页 > 解决方案 > Linq TypeScript 三元运算符 - 是否可以在不重复代码的情况下重新使用条件作为第一个表达式?

问题描述

我的问题很简单,我搜索了 StackOverflow、StackExchange + 其他一些试图找到答案的网站,但结果有点短。

这是关于 Linq 三元表达式,即

Condition ? Expression1 : Expression2;

本质上,我可以重新使用ConditionLinq 三元表达式作为第一个返回的Expression吗?这可能吗?

我想要这样做的原因是我有一个很长的 Linq 三元表达式,它跨越 3 行代码并延伸超过 183 个字符。它这么长的主要原因是因为一些字符串和变量名。

我的代码的精简版如下:

var x = array.find(x => x.key == "EXAMPLE_KEY_NAME") ? array.find(x => x.key == "EXAMPLE_KEY_NAME") : null;

或者

var x = array.find(x => x.key == "EXAMPLE_KEY_NAME") ? array.find(x => x.key == "EXAMPLE_KEY_NAME").value : null;

我考虑过的几个解决方案是:

我决定反对这两种方法,因为它们在页面上的物理代码量方面增加了额外的开销。

我想归根结底是,这样的事情存在吗?(初始条件在哪里this

var x = array.find(x => x.key == "EXAMPLE_KEY_NAME") ? this : null;

它也可以用于我在对象中存储的特定值之后的上下文中:

var x = array.find(x => x.key == "EXAMPLE_KEY_NAME") ? this.value : null;

这是我第一次提出问题,尽管我已经回答了很多问题,所以请随时提供建设性的反馈或指出我要阅读的文档方向!

标签: typescriptlinq

解决方案


您可以为此使用可选链接和||运算符:

 var x = array.find(x => x.key == "EXAMPLE_KEY_NAME")?.value || null;

推荐阅读