أنا أستخدم VS Code. يعتمد على TypeScript ، ويستخدم جميع تعريفات TS. المشكلة مع مكتبة jsonwebtoken
. jwt.sign(...,)
على كائن.
// تعريفات النوع لـ jsonwebtoken 7.2.0
// المشروع: https://github.com/auth0/node-jsonwebtoken
// تعريفات بواسطة: Maxime LUCE https://github.com/SomaticIT ، Daniel Heim https://github.com/danielheim
// التعريفات: https://github.com/DefinitelyTyped/DefinitelyTyped
// إصدار TypeScript: 2.2
export declare function sign(payload: string | Buffer | object, secretOrPrivateKey: string | Buffer, options: SignOptions, callback: SignCallback): void;
في JWT ، يمكنك تمرير أي عنصر تريده ، لكن jwt.sign({userId: 1},...)
البسيط لا يعمل كما يلي:
Argument of type '{ userId: number; }' is not assignable to parameter of type 'string | object | Buffer'.
Object literal may only specify known properties, and 'userId' does not exist in type 'string | object | Buffer'.
يجب إصلاحه بواسطة Microsoft / TypeScript # 16290. يرجى تجربتها باستخدام typescript@next
بمجرد دخولها.
كما ذكر @ andy-ms ، يرجع هذا إلى خطأ في TypeScript (Microsoft / TypeScript # 16235)
الحل هو استخدام نوع الاستدلال (أو الصب) ، على سبيل المثال ؛
const payload = { "foo": "bar" }
jwt.sign(payload, secret)
mdebruijne شكرا ، فعلت ذلك بالفعل.
التعليق الأكثر فائدة
كما ذكر @ andy-ms ، يرجع هذا إلى خطأ في TypeScript (Microsoft / TypeScript # 16235)
الحل هو استخدام نوع الاستدلال (أو الصب) ، على سبيل المثال ؛