【发布时间】:2021-02-11 03:08:16
【问题描述】:
我想使用三元运算符重新分配 Javascript(或 Typescript)中的类变量。 this.foo 的重新分配取决于 this.foo 的当前值,我可以使用以下内容进行更新:
setFoo = () => {
this.foo = this.foo ? "" : "foo";
}
但是,我想知道是否可以在不写 this.foo 两次的情况下重新分配 this.foo。这会很有帮助,因为我正在尝试动态更新 Angular 组件上的类(用 Typescript 编写)。
我希望能够使用真值/假值编写类似以下内容的内容。如果this.foo 为真,则分配"";否则,分配"foo":
setFoo = () => {
this.foo =? "" : "foo";
}
我曾尝试搜索类似的问题,但找不到答案。我最初的想法是在 Typescript 4.0 中使用 ??= 运算符,但我认为它不会起作用。也许我的理想解决方案不存在,因为它可能是一个不好的编程习惯。谢谢
【问题讨论】:
-
唯一可能的是
this.foo = this.foo || ""和this.foo = this.foo && ""。这不太符合您的需要,但仍然更短。 -
三元是两个不同值中最短的一个。
-
为什么?三元本身已经够糟糕的了,尽管我现在发现自己更频繁地使用它与
const。不要缩小你的开发代码,当你将代码发布到生产环境时让一个缩小器来做。 -
您编写它的方式有效且足够简洁。我看不出有什么理由要缩短它。
-
我没有发现两个
this.xs 在该特定语法中是多余的,因为有两个运算符,并且两个运算符都需要它们的操作数。这种情况恰好在两个运算符的操作数中使用了相同的变量。如果案例是const x = (y) ? 1 : 2;,你不会认为1是多余的。对于您所追求的,我们需要一个全新的“检查和分配”操作员...
标签: javascript typescript variable-assignment conditional-operator assignment-operator