【问题标题】:How to import a variable from another file in nestjs?如何从nestjs中的另一个文件导入变量?
【发布时间】:2020-10-01 09:58:16
【问题描述】:

我尝试从另一个文件导入变量,但没有成功。 在我的第一个文件中:

import { Injectable } from '@nestjs/common';

@Injectable()
export class Hello {
}
var varhello = "hi";

在另一个我想添加 varHello 的地方:

import { Injectable } from '@nestjs/common';
import * as hello from "./Hello";

@Injectable()
export class AppService {
  getHello(): any {
    console.log(hello.Hello)
  }
}

至少我的 console.log 会返回一些内容:[class Hello],但我希望它返回文本“hi”。 有人知道如何解决我的问题吗?

【问题讨论】:

    标签: javascript node.js typescript nestjs


    【解决方案1】:

    最佳做法是在 hello 类中保持 greeting 变量私有,并拥有用于返回/修改其他类可以使用的属性的公共方法,然后在任何需要的地方注入 Hello 服务并调用该方法。

    import { Injectable } from '@nestjs/common';
    
    @Injectable()
    export class Hello {
      private _greeting: string = 'Hi';
    
      get greeting(): string {
        return this._greeting;
      }
    }
    

    然后为您服务:

    import { Inject, Injectable } from '@nestjs/common';
    
    import { Hello } from './Hello';
    
    @Injectable()
    export class AppService {
      @Inject()
      protected hello: Hello;
    
      getHello(): void {
        console.log(this.hello.greeting);
      }
    }
    

    或者如果你愿意,你可以像这样导出一个 const 变量

    // Hello.ts file
    export const hello = 'Hi';
    

    在您的服务中,您只需导入它

    import { Injectable } from '@nestjs/common';
    
    import { hello } from './Hello';
    
    @Injectable()
    export class AppService {
      getHello(): void {
        console.log(hello);
      }
    }
    

    但是这样它只是一个常量,你不能覆盖它。

    【讨论】:

      猜你喜欢
      • 2013-06-19
      • 2018-01-10
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      相关资源
      最近更新 更多