【问题标题】:How to import type in typescript?如何在打字稿中导入类型?
【发布时间】:2018-05-24 19:12:18
【问题描述】:

我有以下出口:

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)

【问题讨论】:

    标签: typescript nestjs


    【解决方案1】:

    Nest 的依赖注入不适用于非 DI 类型(例如 JWT 库)。我的建议是制作一个包装器组件,根据 ITS 文档使用 jwt 库,然后将包装器正常注入控制器。

    @Component()
    export class JWTComponent {
        signJwt(data) {
            jwt.sign() // etc.
        }
    
        verifyJwt() {
            jwt.verify() // etc.
        }
    }
    

    【讨论】:

      【解决方案2】:

      经过一番挖掘后,我得到了下一个解决方案:

      import * as types from '...';
      // then you can use it like so:
      jsonWebToken: types.JsonWebToken,
      

      但是这个解决方案很愚蠢,让我很难过。这是打字稿错误还是什么?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-17
        • 2019-04-11
        • 2017-04-19
        • 2020-08-02
        • 2012-12-26
        • 2019-08-13
        • 2022-07-28
        相关资源
        最近更新 更多