Restify (Restify를 모르는 경우 Express.js로 간주)로 작업하고 있으며 요청 개체에 개체를 연결하여 개체에 액세스 할 수 있습니다. 다음 노선.클래스 개체의 typedefition을 확장하십시오.
더 구체적인 예 : req.user = data;
타이프 라이터 분명 나에게 소리지르이 라인에서
export const validate: ValidateFn = async (req: Request, res: Response, next: Next): Promise<void> => {
// Validate and parse token from headers
const authHeader: string = req.header('authorization', null);
const parsedToken: string = parseBearerToken(authHeader);
if (parsedToken == null) { return next(new errors.InvalidCredentialsError('Missing authorization')); }
// Verify token
try {
const data: {} = jwt.verify(parsedToken, config.apiServer.jwtSecret);
req.user = data;
} catch (err) {
return next(new errors.NotAuthorizedError('Invalid authentication'));
}
return next();
};
, 주어진 요청 객체에 user
라고 더 필드가 없기 때문입니다. 이상적으로는 동일한 이름이지만 추가 속성이 user: {};
인 계속 사용할 수 있도록 restype 네임 스페이스에있는 Request
유형의 정의를 간단히 확장 할 수 있다고 생각했습니다.
또한 새 형식 (예 : RequestValidated
)을 만들면 좋겠지 만 전체 라이브러리 네임 스페이스 (추가 가져 오기 없음)에서 사용할 수 있어야합니다. 나는 그것을 사용할 수 있도록합니다 (Request
객체에 부착 된 사용자 지정 속성처럼) 내 사용자 지정 변경을 추가하는 타사 라이브러리의 정의를 확장 할 수있는 방법
을 : 그래서 내 질문은 한 문장으로 요약
원래의 타이핑 파일을 편집하지 않고 동일한 네임 스페이스 (정확히 입력 된 레포의 일부)?
와우 나는 Request 인터페이스를 확장해야한다고 생각했지만, 필요하지는 않았으며 정의 된 속성이 추가되었습니다. 완전한! 고마워. – kentor