Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果…;其他…;else if语句_Javascript_Node.js_Typescript - Fatal编程技术网

Javascript 如果…;其他…;else if语句

Javascript 如果…;其他…;else if语句,javascript,node.js,typescript,Javascript,Node.js,Typescript,我有一段代码: if (service.isHostel) { return new Hostel({url: service.url}); } else { return new booking({url: service.url}); } 我想用一行来表示 service.isHostel ? Hostel({url: service.url}) : return new booking({url: serv

我有一段代码:

 if (service.isHostel) {
            return new Hostel({url: service.url});
        } else {
            return new booking({url: service.url});
        }
我想用一行来表示

service.isHostel ? Hostel({url: service.url}) : return new booking({url: service.url})
但我有一个编译错误:


需要表达式。

您需要为
Hostel
添加一个
新的
操作符,并省略该表达式中的return语句

return service.isHostel ? new Hostel({url: service.url}) : new booking({url: service.url});
另一个版本是选择不同的类

return new (service.isHostel ? Hostel : booking)({url: service.url});

您只能在三元操作中编写表达式(返回值的代码段)
return
是不能在三元运算符表达式中使用的语句

在这里,您必须
返回
两个值,然后才能使用
返回

return service.isHostel ? new Hostel({url: service.url}) : new booking({url: service.url})

是否尝试返回服务.isHostel?新建招待所({url:service.url}):新建预订({url:service.url})您是否缺少招待所对象附近的
new
关键字?整个代码应为return
return service.isHostel?新旅馆({url:service.url}):新预订({url:service.url})
我喜欢这种方法,因为如果您将
(service.isHostel?hotel:booking)
移动到一个单独的功能,您将到达工厂模式