Как мне использовать экзистенциальный оператор CoffeeScript, чтобы проверить некоторые свойства объекта на неопределенность?
Я хотел бы использовать экзистенциальный оператор CoffeeScript, чтобы проверить некоторые свойства объекта на неопределенность. Однако я столкнулся с небольшой проблемой.
Код как это:
console.log test if test?
Компилируется в:
if (typeof test !== "undefined" && test !== null) console.log(test);
Какое поведение я хотел бы увидеть. Однако, когда я пытаюсь использовать его в отношении свойств объекта, вот так:
console.log test.test if test.test?
Я получаю что-то подобное:
if (test.test != null) console.log(test.test);
Который вообще не выглядит как проверка против неопределенного. Единственный способ, которым я мог бы добиться того же (1: 1) поведения, что и при использовании его для объектов, - использовать большую проверку:
console.log test.test if typeof test.test != "undefined" and test.test != null
Вопрос - я что-то не так делаю? Или скомпилированный код является достаточным для проверки существования свойства (нулевая проверка с преобразованием типов)?