check for null?
QwertyZW opened this issue · comments
The javascript:
var x;
if (x == undefined){
}
transpiles to:
x = undefined
if x == undefined
else
and emits a "Operator '==' is not supported in coffescript"
expected transpilation:
x = undefined
if typeof x is 'undefined'
else
This is weird territory... Typeof x == 'undefined'
is not a direct
translation because it's possible to redefine undefined
. Also, x == undefined
will be true if x is null, so the more accurate translation is
more like x is undefined or x is null
I guess.
With that said, try === instead to get rid of the ambiguities :)
On Sat, Nov 5, 2016, 11:01 AM QwertyZW notifications@github.com wrote:
The javascript:
var x;
if (x == undefined){}
transpiles to:
x = undefined
if x == undefined
elseand emits a "Operator '==' is not supported in coffescript"
expected transpilation:
x = undefined
if typeof x is 'undefined'
else—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#460, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEikciTeERuQYoXF0LDQQ0GwrrhrLJMks5q6_GdgaJpZM4KqJVr
.
idk about x == undefined
, but x == null
is a common pattern that e.g. has a eslint rule preference (deprecated only because a more general preference can be used to emulate it)
i much rather use x == null
than the cumbersome and typo-prone x === null || typeof x === 'undefined'
.
@rstacruz Yea that came up to me after giving it a bit more thought. I use x == null as a shorthand for x === null || typeof x === 'undefined'
. I think what you can do in this case a temporary hack would be to create a transformation pass that transforms the js
expression == null
to the js
expression === null || typeof expression === 'undefined'
before transpiling it coffee script
Of course that's just a suggestion under the assumption that the current architecture allows something like this
(JFTR I'm by no means a compiler person)
yep, it allows for that! I have no time to do it at the moment though
:(
On Nov 6 2016, at 12:36 pm, QwertyZW notifications@github.com wrote:
@rstacruz Yea that came up to me after giving it a bit more thought. I use x == null as a shorthand for
x === null || typeof x === 'undefined'
. I think what you can do in this case a temporary hack would be to create a transformation pass that transforms the jsexpression == null
to the js
expression === null || typeof expression === 'undefined'
before transpiling it coffee script
Of course that's just a suggestion under the assumption that the current architecture allows something like this
(JFTR I'm by no means a compiler person)