三元运算符,Elvis运算符,安全导航运算符和逻辑OR运算符的比较

Ram*_*ran 13 operators typescript angular

与三元运算符与Elvis运算符与安全导航运算符与逻辑运算符或角运算符的比较


三元运算符(声明?obj:obj)

let gender = user.male ? "male" : "female";
Run Code Online (Sandbox Code Playgroud)

猫王运营商(?:)

let displayName = user.name ?: "";
Run Code Online (Sandbox Code Playgroud)

安全导航操作员(?.)

let displayName = user.name ?. "";
Run Code Online (Sandbox Code Playgroud)

逻辑或运营商

let displayName = user.name || "";
Run Code Online (Sandbox Code Playgroud)

以上所有运营商都在做同样的过程.有什么不同的好处,哪个最好和最差?

Pie*_*Duc 9

也许我错过了几个版本,但据我所知,TypeScript没有elvis操作员或安全导航操作员.他们唯一的额外事情是非空断言运算符!.,但这只适用于编译器,并且在编译的js !中将被删除.然而,Angular在他们的模板中确实有安全的导航操作符,但是在引擎盖下这将解析为逻辑或||.这里的好处是提高了可读性和更小的模板.

除此之外,TypeScript确实有?:符号,但这在接口或方法参数中用于指示该值是可选的

这使得我们使用三元运算符vs逻辑或.如果有3个值,您将使用第一个.问题,答案是肯定的结果,答案没有结果提出问题.

而后者则有2个值.第一个,如果解决了truthy将是答案,否则第二个,无论其价值.

好处,我不能说太多.我希望它们同样快,边际差异.或许可读性随着三元选项而增加,你显然可以使用它而不是逻辑或者||,但我个人喜欢使用它||,因为它使代码保持紧凑.

TLDR;

  • 三元运算符

简化了if else,随处可用

  • 猫王经营者 ?:

在typescript/javascript/angular中不可用,基本上与之相同 ||

  • 安全导航操作员 ?.

仅在角度模板中可用,用于防止对象参数导航中的空指针

  • 逻辑或 ||

如果不是左手,那么右手.如果不是更简化的话.提供打字稿/ javascript/angular