我试图了解如何使用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 = 404
和err['status'] = 404
的含义是什么?
答案 0 :(得分:0)
我没有将状态视为错误的属性。然而在JS中它起作用。但在TS中却没有。为什么这样,行
err.status = 404
和err['status'] = 404
的含义是什么?
基本上express
在错误的status
属性上添加,以将其作为HTTP响应代码提供给用户。
由于Error
默认没有此 ... typescript抱怨。但是你可以通过添加['error']
属性来使用error
hack 显式来抑制这一点,因为我滥用错误对象。
注意:从javascript角度来看,foo.bar
与 foo['bar']
完全相同。这就是 JavaScript 的工作原理。