我正在使用node v6.10.3
,typescript v2.3.4
和jsonwebtoken v7.4.1
。直到今天,我才使用@types/jsonwebtoken v7.2.0
中的类型信息,但我升级到@types/jsonwebtoken v7.2.1
,现在当我运行我的应用程序时,它会出错:
src/reports/password-reset/password-reset.report.ts(18,23): error TS2345: Argument of type '{ ownerId: string; passwordResetToken: boolean; }' is not assignable to parameter of type 'string | object | Buffer'.
Object literal may only specify known properties, and 'ownerId' does not exist in type 'string | object | Buffer'.
代码行:
let token = sign({ownerId:passwordResetRequest.ownerId, passwordResetToken: true },
configuration.secret, {
expiresIn: timeToLiveInSeconds
});
@types/jsonwebtoken v7.2.0
不会出现此错误,仅v7.2.1
。
奇怪的是,如果我在Visual Studio Code(相同版本的TypeScript)中构建我的项目,它会显示相同的错误,但是当我单击错误并转到相关文件时,错误就消失了,VS Code很满意语法。
此外,错误消息告诉我,我的对象{ownerId:passwordResetRequest.ownerId, passwordResetToken: true }
无法传递给string | object | Buffer
类型的参数,但它显然是一个对象。我不知道为什么它甚至关心对象的内容是什么。
另请注意,它工作正常 - 就像实际的jsonwebtoken
库一样好 - 只是在构建期间导致问题的@type
信息。
所以我刚回到@types/jsonwebtoken v7.2.0
,一切正常。这不是一个大问题,但是发生了什么?