如何在打字稿中导入类型?
How to import type in typescript?
我有以下出口:
import * as jwt from 'jsonwebtoken';
...
export type JsonWebToken = typeof jwt;
然后,我尝试这样使用它:
export class AuthService {
constructor(
@Inject(constants.JWT) private readonly jsonWebToken: JsonWebToken,
// error here ^
){}
我收到此错误,指向 JsonWebToken
:
ReferenceError: jwt_provider_1 is not defined
at Object.<anonymous> (D:\Learning\nest\project\server\modules\Auth\auth.service.ts:9:59)
at Module._compile (module.js:573:30)
at Module.m._compile (D:\Learning\nest\project\node_modules\ts-node\src\index.ts:392:23)
at Module._extensions..js (module.js:584:10)
at Object.require.extensions.(anonymous function) [as .ts] (D:\Learning\nest\project\node_modules\ts-node\src\index.ts:395:12)
at Module.load (module.js:507:32)
at tryModuleLoad (module.js:470:12)
at Function.Module._load (module.js:462:3)
at Module.require (module.js:517:17)
at require (internal/module.js:11:18)
经过深入挖掘,我得到了下一个解决方案:
import * as types from '...';
// then you can use it like so:
jsonWebToken: types.JsonWebToken,
但是这个解决方案很愚蠢,让我很伤心。这是打字稿错误还是什么?
Nest 的依赖注入不适用于非 DI 类型(例如 JWT 库)。我的建议是制作一个包装器组件,根据 ITS 文档使用 jwt 库,然后将包装器正常注入到控制器中。
@Component()
export class JWTComponent {
signJwt(data) {
jwt.sign() // etc.
}
verifyJwt() {
jwt.verify() // etc.
}
}
我有以下出口:
import * as jwt from 'jsonwebtoken';
...
export type JsonWebToken = typeof jwt;
然后,我尝试这样使用它:
export class AuthService {
constructor(
@Inject(constants.JWT) private readonly jsonWebToken: JsonWebToken,
// error here ^
){}
我收到此错误,指向 JsonWebToken
:
ReferenceError: jwt_provider_1 is not defined
at Object.<anonymous> (D:\Learning\nest\project\server\modules\Auth\auth.service.ts:9:59)
at Module._compile (module.js:573:30)
at Module.m._compile (D:\Learning\nest\project\node_modules\ts-node\src\index.ts:392:23)
at Module._extensions..js (module.js:584:10)
at Object.require.extensions.(anonymous function) [as .ts] (D:\Learning\nest\project\node_modules\ts-node\src\index.ts:395:12)
at Module.load (module.js:507:32)
at tryModuleLoad (module.js:470:12)
at Function.Module._load (module.js:462:3)
at Module.require (module.js:517:17)
at require (internal/module.js:11:18)
经过深入挖掘,我得到了下一个解决方案:
import * as types from '...';
// then you can use it like so:
jsonWebToken: types.JsonWebToken,
但是这个解决方案很愚蠢,让我很伤心。这是打字稿错误还是什么?
Nest 的依赖注入不适用于非 DI 类型(例如 JWT 库)。我的建议是制作一个包装器组件,根据 ITS 文档使用 jwt 库,然后将包装器正常注入到控制器中。
@Component()
export class JWTComponent {
signJwt(data) {
jwt.sign() // etc.
}
verifyJwt() {
jwt.verify() // etc.
}
}