Как импортировать переменную из другого файла в nestjs?

#javascript #node.js #typescript #nestjs

#javascript #node.js #typescript #nestjs

Вопрос:

Я пытаюсь импортировать переменную из другого файла, но безуспешно. В моем первом файле у меня есть :

 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)
  }
}
  

По крайней мере, моя консоль.журнал возвращает что-то: [class Hello], но я хочу, чтобы он возвращал текст «привет».
Кто-нибудь знает, как решить мою проблему?

Ответ №1:

Наилучшей практикой было бы сохранить переменную приветствия закрытой внутри класса hello и иметь общедоступные методы для возврата / изменения свойства, которые могут использоваться другими классами, после этого внедрите службу 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);
  }
}
  

Но таким образом это будет просто константа, и вы не сможете ее перезаписать.