#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);
}
}
Но таким образом это будет просто константа, и вы не сможете ее перезаписать.