Я хотел бы переназначить переменную класса в 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 && "". Это не совсем соответствует вашим потребностям, но все же короче. - person Iyashi   schedule 28.10.2020const. Не минимизируйте свой код разработки, позвольте минификатору сделать это, когда вы выпускаете код в производство. - person Teemu   schedule 28.10.2020this.fooдважды избыточно, и мне было любопытно узнать, смогу ли я устранить эту избыточность. Спасибо за ответы; Я согласен, что текущий способ краток. - person Charles Kornoelje   schedule 28.10.2020this.xизбыточными в этом конкретном синтаксисе, поскольку есть два оператора, и обоим операторам нужны свои операнды. Дело просто в том, что в операндах обоих операторов используется одна и та же переменная. Если бы дело было вconst x = (y) ? 1 : 2;, вы бы не подумали, что1лишнее. Для того, что вам нужно, нам понадобится совершенно новый оператор проверки и назначения... - person Teemu   schedule 28.10.2020