我有一个简单的 express 身份验证中间件。它检查标题,如果一切正常,它调用 next()
现在当我在“DoSomething”时,“this”等于全局而不是“Test”的实例并且 “this.DoSomeThingPrivate”未定义。
我试过了
DoSomeThingPrivate :() => void;
this.DoSomeThingPrivate = () => {
...
}
图案。但也不行。
import express = require('express');
var app = express();
class Test {
constructor() {
}
DoSomething(req:express.Request, res:express.Response, next:Function) :void {
this.DoSomeThingPrivate();
}
private DoSomeThingPrivate() :void
{
}
}
var test = new Test();
app.use(test.DoSomething);
任何想法...
谢谢
最佳答案
以下应该可以正常工作,即使用粗箭头表示 DoSomething
而不是 DoSomethingPrivate
:
import * as express from 'express';
var app = express();
class Test {
constructor() {
}
// important:
DoSomething = (req:express.Request, res:express.Response, next:express.NextFunction) => {
this.DoSomeThingPrivate();
}
private DoSomeThingPrivate() :void
{
}
}
var test = new Test();
app.use(test.DoSomething);
注意:您不需要使用bind
。还有 https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1
关于node.js - typescript express 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27567119/