我试图找出建议检查undefined和null的内容。
在JavaScript中,一元运算符像两个等号一样进行类型转换。打字稿对此做了什么,例如:
if (!foo
)。
是否转化为
if (foo != undefined && foo != null)
或Crockford的建议如:
if (foo !== undefined && foo !== null)
或者它没有被转化为任何类型的东西?
答案 0 :(得分:4)
与CoffeeScript不同,Typescript不会做那些事情,所以如果你有这个ts代码:
<script>
function get_mail_content(m_id){
var datastring = 'm_id=' + m_id;
var a= false;
$.ajax({
type: "POST",
async: false,
url: "<?php echo site_url(); ?>admin/get_mail_contents",
data: datastring,
cache: false,
success: function (result) {
console.log(result);
$("#content").append('<div class="mail-toolbar clearfix"> <div class="float-left"><h4 class="font-primary">This is a demo email title</h4></div><div class="float-right"><a href="#" class="btn btn-primary" title="Reply"> Reply <i class="glyph-icon icon-mail-reply"></i></a><a href="#" class="btn btn-default" title="Print"><i class="glyph-icon icon-print"></i></a><a href="#" class="btn btn-danger mrg10L" title="Delete"> <i class="glyph-icon icon-trash-o"></i></a> </div></div><div class="divider"></div><div class="pad5A clearfix mrg10B"><div class="float-left"><b>"' + result['from'] + '"</b> (john.doe@example.com) <i>to</i> <b>me</b></div> <div class="float-right opacity-80"><i class="glyph-icon icon-clock-o mrg5R"></i> 17:55, 15.10.2014</div></div><div class="email-body"><p>"' + result["content"] + '"</p></div><div class="button-pane"><a href="#" class="btn btn-blue-alt" title="Reply"><i class="glyph-icon icon-mail-reply"></i> Reply </a><a href="#" class="btn btn-default" title="Reply">Forward<i class="glyph-icon icon-mail-forward"></i> </a> </div>');
}
});
return a;
}
</script>
它将编译为:
let foo;
if (!foo) {
...
}
如果你想避免总是检查这样的事情:var foo;
if (!foo) {
...
}
那么你可以简单地将它提取到一个函数:
if (foo !== undefined && foo !== null)
答案 1 :(得分:2)
您可以使用Typescript Playground检查代码的编制方式。
在你的情况下
var foo: any;
if (!foo) {
}
将被转换为
var foo;
if (!foo) {
}
没有任何其他代码。
所以你需要写正确的支票代码。