错误[' status']有什么作用?

时间:2015-09-10 20:37:05

标签: node.js typescript

我试图了解如何使用Express与Typescript。我使用表达式创建了一个很好的默认快速项目。在其中我找到了以下简单的方法,我无法理解,也不会编译为打字稿'

app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

事实上,atom-typescript和tsc给我的错误is at line 31, file /Volumes/MonsterHD/mydev/expressgen/app.tsProperty 'status' does not exist on type 'Error'.

从其他研究中我看到有效转换为打字稿以使其工作如下:

app.use((req, res, next) => {
   var err = new Error('Not Found');
   err['status'] = 404;
   next(err);
});

我很困惑。我相信我正在寻找Node中的Error类。我没有在错误中将状态视为属性。然而在JS中它起作用。但在TS中却没有。为什么这样,行err.status = 404err['status'] = 404的含义是什么?

1 个答案:

答案 0 :(得分:0)

  

我没有将状态视为错误的属性。然而在JS中它起作用。但在TS中却没有。为什么这样,行err.status = 404err['status'] = 404的含义是什么?

基本上express在错误的status属性上添加,以将其作为HTTP响应代码提供给用户。

由于Error默认没有此 ... typescript抱怨。但是你可以通过添加['error']属性来使用error hack 显式来抑制这一点,因为我滥用错误对象。

注意:从javascript角度来看,foo.bar foo['bar']完全相同。这就是 JavaScript 的工作原理。