আমি কৌনিক 2 / টাইপস্ক্রিপ্টে কীভাবে বিশ্বব্যাপী পরিবর্তনশীল ঘোষণা করতে পারি? [বন্ধ]


164

আমি চাই যে কিছু ভেরিয়েবল ভাষার Angular 2যে কোনও জায়গায় অ্যাক্সেসযোগ্য Typescript। এটি কীভাবে সম্পাদন করা উচিত?


2
যদি তারা স্থির পরিবর্তনশীল হয় তবে পরিষেবাগুলি ব্যবহার করার দরকার নেই। কিছু ফাইলের মধ্যে কেবল একটি ভেরিয়েবল যুক্ত করুন এবং তারপরে আপনার যা প্রয়োজন সেখানে এটিকে আমদানি করুন।
এরিক মার্টিনেজ

দুর্ভাগ্যক্রমে অ্যাঙ্গুলার 2 রানটাইমের সময় ব্যতিক্রম, বলছে Uncaught ReferenceError: Settings is not definedSettingsপাবলিক স্ট্যাটিক ভেরিয়েবলগুলি সহ ক্লাসটি রফতানির জন্য সেট করা হয়েছে এবং এটি যেখানে ব্যবহৃত হয়েছে আমদানি করেছে।
সেন জ্যাকব

আমি জানি এই পোস্টটি পুরানো এবং এর অনেকগুলি বৈধ উত্তর রয়েছে। তবে এরিক যেমন উল্লেখ করেছেন। যদি এটির একটি সাধারণ মান যা আপনি ঘোষণা করতে চান এবং আপনার অ্যাপ্লিকেশনটির মাধ্যমে অ্যাক্সেস পেতে চান আপনি একটি শ্রেণি তৈরি করতে পারেন এবং স্থির সম্পত্তি সহ শ্রেণিটি রফতানি করতে পারেন। স্ট্যাটিক ভেরিয়েবলগুলি ক্লাসের উদাহরণের চেয়ে ক্লাসের সাথে সম্পর্কিত। আপনি ক্লাসটি আমদানি করতে পারেন এবং শ্রেণি থেকে সরাসরি সম্পত্তিটি অ্যাক্সেস করতে সক্ষম হবেন irect
ডি ওয়েট এলিস

উত্তর:


195

এখানে সহজ সমাধান ডাব্লু / ও Serviceনয় Observer:

গ্লোবাল ভেরিয়েবলগুলি একটি ফাইলের মধ্যে রফতানি করুন।

//
// ===== File globals.ts    
//
'use strict';

export const sep='/';
export const version: string="22.2.2";    

অন্য একটি ফাইলে গ্লোবালগুলি ব্যবহার করতে একটি importবিবৃতি ব্যবহার করুন : import * as myGlobals from 'globals';

উদাহরণ:

// 
// ===== File heroes.component.ts    
//
import {Component, OnInit} from 'angular2/core';
import {Router} from 'angular2/router';
import {HeroService} from './hero.service';
import {HeroDetailComponent} from './hero-detail.component';
import {Hero} from './hero';
import * as myGlobals from 'globals'; //<==== this one (**Updated**)

export class HeroesComponent implements OnInit {
    public heroes: Hero[];
    public selectedHero: Hero;
    // 
    //
    // Here we access the global var reference.
    //  
    public helloString: string="hello " + myGlobals.sep + " there";

         ...

        }
    }

ধন্যবাদ @ এরিক-মার্টিনেজ


3
আমদানির বিবৃতিতে একটি ত্রুটি পেয়েছে। ব্যবহার ছিলimport * as globs from 'globals'
মাইক এম

13
আপনি কেন আমদানির পরিবর্তে "প্রয়োজনীয়" ব্যবহার করলেন?
আইয়্যাশ

4
export constপরিবর্তে আমি ব্যবহার করব export var- আপনি সত্যই নিশ্চিত করতে চান যে এই বৈশ্বিক পরিবর্তনগুলি পরিবর্তন করা যায় না
মিশাল বোসকা

1
এর মতো আমদানি টাইপস্ক্রিপ্টে আর বৈধ নয়। আপনার উত্তর আপডেট করুন। সঠিক হবে:import * as myGlobals from 'globals'
মিক

7
import * as myGlobals from './path/to/globals';
টিমোথি জর্ন

89

আমি @ সুপেরকোব্রা থেকেও সমাধানটি পছন্দ করি। আমি শুধু এটি সামান্য উন্নতি করতে চাই। আপনি একটি বস্তু যা সমস্ত ধ্রুবক রয়েছে রপ্তানি, তাহলে আপনি কেবল es6 ব্যবহার করতে পারে আমদানি মডিউল ব্যবহার না করেই প্রয়োজন

আমি সম্পত্তিটি সত্য স্থির হয়ে ওঠার জন্য অবজেক্ট.ফ্রিজেও ব্যবহার করেছি। আপনি যদি বিষয়টিতে আগ্রহী হন তবে আপনি এই পোস্টটি পড়তে পারেন ।

// global.ts

 export const GlobalVariable = Object.freeze({
     BASE_API_URL: 'http://example.com/',
     //... more of your variables
 });

আমদানি ব্যবহার করে মডিউলটি উল্লেখ করুন।

//anotherfile.ts that refers to global constants
import { GlobalVariable } from './path/global';

export class HeroService {
    private baseApiUrl = GlobalVariable.BASE_API_URL;

    //... more code
}

আমার কাছে এটিই সেরা সমাধান কারণ (1) এটি সর্বনিম্ন সংখ্যার কোড সহ সহজতম এবং (২) এটি আপনাকে প্রতিটি একক উপাদান বা আপনি যে জায়গাতে এটি ব্যবহার করতে চান সেখানে কিছু ডার্ন পরিষেবা ইনজেকশনের প্রয়োজন হয় না এবং এটিও করে না আপনার এটি @NgModule এ নিবন্ধিত করার প্রয়োজন। আমার জীবনের জন্য আমি এটি অনুমান করতে পারি না কেন এটি করার জন্য একটি কৌনিক 2 পরিষেবা তৈরি করা প্রয়োজন হবে, তবে সম্ভবত এমন কিছু আছে যা আমি উপেক্ষা করছি? আমি আপাতত এই দুর্দান্ত সমাধানটি ব্যবহার করছি তবে দয়া করে আমাকে আরও জানান যে এখানে আরও জটিল উত্তরগুলি আরও ভাল কেন?
ফায়ারড্রাগন

8
আপনার গ্লোবাল পরিবর্তনশীল কোনও পরিবর্তনশীল নয়। এটি একটি ধ্রুবক।
প্রিয়া আর

@ প্রিয়াআর এলএল, হ্যাঁ, আপনি ঠিক বলেছেন। আমি ধরে নিলাম যে প্রশ্নের মূল উদ্দেশ্যটি ছিল বিশ্বব্যাপী কিছু মানগুলিতে অ্যাক্সেস পাওয়ার নিরাপদ উপায়, তাই আমি সংশোধন করেছি। অন্যথায়, কনটেস্ট পরিবর্তন করতে দ্বিধা বোধ করুন, আপনি আপনার পরিবর্তনশীল পাবেন।
টিম হং

অবজেক্ট.ফ্রিজের নীচের দিকটি হল মানগুলি টাইপ করা হয় না। যাইহোক, ক্লাসে মান মোড়ানো আমার দৃষ্টিকোণ থেকে একটি ভাল নকশা। সুতরাং আমাদের টাইপ করা বৈশিষ্ট্য এবং সত্য ধ্রুবকের মধ্যে নির্বাচন করতে হবে।
হার্পস

কীভাবে গ্লোবাল ভার্ভেয়েবল সেট করা যায়? BSASAPAP__URL কে অন্য উপাদানতে ..?
সুনীল চৌধুরী চৌধুরী

59

একটি ভাগ করা পরিষেবা হ'ল সর্বোত্তম পন্থা

export class SharedService {
  globalVar:string;
}

আপনার সম্পূর্ণ অ্যাপ্লিকেশনটির জন্য একটি একক উদাহরণ ভাগ করতে সক্ষম হতে এটি নিবন্ধভুক্ত করার সময় আপনার খুব সতর্ক হওয়া দরকার। আপনার আবেদনটি নিবন্ধ করার সময় আপনাকে এটি সংজ্ঞায়িত করতে হবে:

bootstrap(AppComponent, [SharedService]);

তবে providersআপনার উপাদানগুলির বৈশিষ্ট্যের মধ্যে এটি আবার সংজ্ঞায়িত করতে হবে না :

@Component({
  (...)
  providers: [ SharedService ], // No
  (...)
})

অন্যথায় উপাদান এবং এর উপ উপাদানগুলির জন্য আপনার পরিষেবার একটি নতুন উদাহরণ তৈরি করা হবে।

অ্যাঙ্গুলার 2 এ নির্ভরতা ইনজেকশন এবং হায়ারারিকাল ইনজেকশনাররা কীভাবে কাজ করে সে সম্পর্কে আপনি এই প্রশ্নের এক নজর দেখতে পারেন:

আপনি খেয়াল করতে পারেন যে Observableযখন আপনার বিশ্বব্যাপী সম্পত্তি পরিবর্তন হয় আপনি নিজের অ্যাপ্লিকেশনটির কিছু অংশ অবহিত করতে পরিষেবাতে বৈশিষ্ট্যগুলিও সংজ্ঞায়িত করতে পারেন :

export class SharedService {
  globalVar:string;
  globalVarUpdate:Observable<string>;
  globalVarObserver:Observer;

  constructor() {
    this.globalVarUpdate = Observable.create((observer:Observer) => {
      this.globalVarObserver = observer;
    });
  }

  updateGlobalVar(newValue:string) {
    this.globalVar = newValue;
    this.globalVarObserver.next(this.globalVar);
  }
}

আরও তথ্যের জন্য এই প্রশ্নটি দেখুন:


যদিও এটি এক অন্যরকম। @ রট 2000 মনে হচ্ছে আমাদের উত্তরটি ভুল। প্রতিযোগিতামূলক উত্তর সরবরাহের চেয়ে আমি সাধারণত এই সিদ্ধান্তটি অন্যের কাছে রেখে যাই তবে যদি তিনি আমাদের উত্তরগুলি ভুল বলে নিশ্চিত হন তবে আমি এটি বৈধ বলে মনে করি। আমার উত্তরের মন্তব্যে তিনি যে দস্তাবেজগুলির সাথে সংযুক্ত ছিলেন সেগুলিতে উল্লেখ করা হয়েছে যে এটি হতাশ হয়েছে তবে আমি কোনও অসুবিধে দেখতে পাচ্ছি না এবং ডক্সে যুক্তিগুলি বেশ দুর্বল। বুটস্ট্র্যাপে সরবরাহকারীদের যুক্ত করাও বেশ সাধারণ। যাইহোক এই যুক্তির উদ্দেশ্য কী হবে। এবং কি HTTP_PROVIDERSএবং অনুরূপ, তাদেরও যুক্ত করা উচিত নয় bootstrap()?
গন্টার জ্যাচবাউয়ার

2
হ্যাঁ আমি কেবল যুক্তিতে এবং ডকের অংশটি পড়েছি। সত্যিই আমি কেন ডক থেকে নিরুৎসাহিত হয়েছে তা সত্যিই বুঝতে পারি না। এটি কি কোনও যৌক্তিক বিভাজনকে সংজ্ঞায়িত করার উপায়: বুটস্ট্র্যাপিংয়ের সময় অ্যাঙ্গুলার 2 কোর নির্দিষ্ট (রাউটিং সরবরাহকারী, HTTP সরবরাহকারী) কী এবং অ্যাপ্লিকেশন উপাদান ইনজেক্টারে অ্যাপ্লিকেশন-নির্দিষ্ট কী is এটি বলেছে যে মূলের জন্য আমরা কেবল একটি সাব ইনজেক্টর (অ্যাপ্লিকেশন ওয়ান) রাখতে পারি (বুটস্ট্র্যাপ করার সময় সংজ্ঞায়িত)। আমি কি কিছু মিস করছি? এছাড়াও হায়ারারিকাল ইনজেক্টর সম্পর্কিত নথিতে, পরিষেবা সরবরাহকারীকে মূল ইনজেক্টরের মধ্যে সংজ্ঞায়িত করা হয় ;-)
থিয়েরি টেম্পিলার

3
কেবলমাত্র যুক্তিটি আমি দেখতে পাচ্ছি যে সম্ভাবনাটি যতটা সম্ভব সংকীর্ণ রাখা এবং মূল উপাদানটি ব্যবহার করা তাত্ত্বিকভাবে ব্যবহারের চেয়ে সামান্য সংক্ষিপ্ত bootstrap()হলেও বাস্তবে এটি কোনও বিষয় নয়। আমি মনে করি এগুলিতে তালিকাবদ্ধকরণ boostrap()কোডটি বোঝা সহজ করে তোলে। একটি উপাদান সরবরাহকারী, নির্দেশাবলী, একটি টেমপ্লেট আছে। আমি সেখানে তালিকাভুক্ত গ্লোবাল সরবরাহকারী ছাড়াই এটি অতিরিক্ত লোড পেয়েছি। অতএব আমি পছন্দ করি bootstrap()
গন্টার জ্যাচবাউয়ার

2
এবং এই জাতীয় বৈশ্বিক চলকগুলির একটি কীভাবে উল্লেখ করা যায়? এমনকি পরিষেবাটি বুটস্ট্র্যাপ করার পরেও alert(globalVar)ফলাফলকে ত্রুটিযুক্ত করে।
phil294

আমি এটি এখনও চেষ্টা করি নি, তবে আপনি এর মতো কিছু চাইবেন: সতর্কতা (এটি.SharedService.globalVar)
গাছ_রে_গ্রেট

39

উদাহরণস্বরূপ দেখুন কৌণিক 2 - ভাগ করা পরিষেবাদির বাস্তবায়ন

@Injectable() 
export class MyGlobals {
  readonly myConfigValue:string = 'abc';
}

@NgModule({
  providers: [MyGlobals],
  ...
})

class MyComponent {
  constructor(private myGlobals:MyGlobals) {
    console.log(myGlobals.myConfigValue);
  }
}

বা স্বতন্ত্র মান প্রদান

@NgModule({
  providers: [{provide: 'myConfigValue', useValue: 'abc'}],
  ...
})

class MyComponent {
  constructor(@Inject('myConfigValue') private myConfigValue:string) {
    console.log(myConfigValue);
  }
}

যেহেতু Angular2 বিটা 7 (আমার মনে হয়) আপনার রুট উপাদান (ওরফে বুটস্ট্র্যাপ) এ সরাসরি আপনার পরিষেবাটি নিবন্ধ করা উচিত নয়। আপনি যদি নিজের অ্যাপ্লিকেশনটিতে কোনও কিছু ওভাররাইড করতে চান তবে আপনি সেখানে একটি নির্দিষ্ট সরবরাহকারীর ইনজেকশন করতে পারেন।
মিহাই

1
আপনি কি বোঝাতে চেয়েছেন তা নিশ্চিত না। অবশ্যই আপনি একটি পরিষেবা নিবন্ধন করতে পারেন bootstrap()bootstrap()এবং মূল উপাদান দুটি পৃথক জিনিস। আপনি যখন ফোন করবেন তখন bootstrap(AppComponent, [MyService])পরিষেবাটি নিবন্ধভুক্ত করুন boostrap()এবং AppComponentএটি মূল উপাদান। দস্তাবেজগুলি কোথাও উল্লেখ করেছে যে এটি মূল উপাদানগুলিতে সরবরাহকারী (পরিষেবাদি) রেজিস্ট্রেশন করাকে পছন্দ করে providers: ['MyService']তবে আমি পক্ষে বা বিরোধী bootstrap()বা মূল উপাদানটির পক্ষে কোনও যুক্তি খুঁজে পাইনি ।
গন্টার জ্যাচবাউয়ার

আপনি আপনার তর্কটি কৌণিক 2 গাইড বিভাগে নির্ভর করতে পারেন ডিপেন্ডেন্সি ইনজেকশন ( কৌণিক.ও / ডকস / সেটস / স্লেস্ট / গাইড / ডিপেন্ডেন্সি- ইনজেকশন এইচটিএমএল )। তারা যেমন বলে, আপনি এটি করতে পারেন তবে এটি হতাশ। এই ব্যবহারকারী কোনও জাদুকরী আইনিংজেক্ট করার সর্বোত্তম উপায়ের জন্য জিজ্ঞাসা করছেন আপনার সমাধানটি কোর্ট নয় ct @ থাইরিটেম্পিলারের জন্য একই
মিহাই

1
আমি মনে করি অ্যাঙ্গুলার ডকটির আরও গুরুত্বপূর্ণ উক্তিটি "বুটস্ট্র্যাপ সরবরাহকারী বিকল্পটি অ্যাংুলারের নিজস্ব পূর্বনির্ধারিত পরিষেবাদি যেমন এর রাউটিং সমর্থনকে কনফিগার ও ওভাররাইড করার জন্য উদ্দিষ্ট।" আমি নিজেই বুটস্ট্র্যাপে খুব কমই পরিষেবাগুলি রেখেছি এবং ডকস এখন এটির পরামর্শ দিতে পেরে আনন্দিত।
রাজকোক

1
ক্লাসটি রপ্তানি করতে ভুলবেন না
ডেমোডাভ

15

অ্যাপ্লিকেশন / গ্লোবাল.এসটিতে গ্লোবাল ক্লাস তৈরি করুন :

import { Injectable } from '@angular/core';

Injectable()
export class Globals{
    VAR1 = 'value1';
    VAR2 = 'value2';
}

আপনার উপাদান:

import { Globals } from './globals';

@Component({
    selector: 'my-app',
    providers: [ Globals ],
    template: `<h1>My Component {{globals.VAR1}}<h1/>`
})
export class AppComponent {
    constructor(private globals: Globals){
    }
}

দ্রষ্টব্য : আপনি গ্লোবাল পরিষেবা সরবরাহকারীটিকে উপাদানটির পরিবর্তে মডিউলটিতে সরাসরি যুক্ত করতে পারেন এবং আপনাকে এই মডিউলটির প্রতিটি উপাদান সরবরাহকারী হিসাবে যুক্ত করতে হবে না।

@NgModule({
    imports: [...],
    declarations: [...],
    providers: [ Globals ],
    bootstrap: [ AppComponent ]
})
export class AppModule {
}

এটি সেরা উত্তর, কারণ এটি অ্যাপ্লিকেশন জুড়ে প্রতিটি উপাদানকে পরিষেবা যুক্ত করার চেয়ে আরও বেশি বহনযোগ্য পন্থা সরবরাহ করে। ধন্যবাদ!
ভিডাল কোয়েভেদো

5
কোডটি কাজ করছে। তবে নোট করুন যে ইনজেকশন ক্লাসটি Globalsএটিতে যুক্ত করার providers: [ ... ]অর্থ আপনি একটি উপাদানগুলির মধ্যে কোনও মান পরিবর্তন করতে পারবেন না এবং তারপরে দ্বিতীয় উপাদানটির অভ্যন্তরে আপডেট হওয়া মানটি জিজ্ঞাসা করতে পারবেন। প্রতিবার আপনি Globalsএটি ইনজেকশন একটি তাজা উদাহরণ। আপনি যদি এই আচরণটি পরিবর্তন করতে চান তবে কেবল সরবরাহকারী হিসাবে যুক্ত করবেন নাGlobals
টিমো বোহর

কেবল একটি নোট, এটি হওয়া উচিত@Injectable()
mast3rd3mon

11

অ্যাঙ্গুলার 2 এর জন্য আইএমএইচও (v2.2.3) সেরা উপায় হ'ল বিশ্বব্যাপী চলকযুক্ত পরিষেবাদি যুক্ত করা এবং টীকাটির providersভিতরে ট্যাগ ছাড়াই উপাদানগুলিতে ইনজেক্ট করা @Component। এইভাবে আপনি উপাদানগুলির মধ্যে তথ্য ভাগ করতে সক্ষম হবেন।

একটি নমুনা পরিষেবা যা বিশ্বব্যাপী ভেরিয়েবলের মালিক :

import { Injectable } from '@angular/core'

@Injectable()
export class SomeSharedService {
  public globalVar = '';
}

একটি নমুনা উপাদান যা আপনার গ্লোবাল ভেরিয়েবলের মান আপডেট করে:

import { SomeSharedService } from '../services/index';

@Component({
  templateUrl: '...'
})
export class UpdatingComponent {

  constructor(private someSharedService: SomeSharedService) { }

  updateValue() {
    this.someSharedService.globalVar = 'updated value';
  }
}

একটি নমুনা উপাদান যা লেখা আছে আপনার গ্লোবাল ভেরিয়েবলের মান:

import { SomeSharedService } from '../services/index';

@Component({
  templateUrl: '...'
})
export class ReadingComponent {

  constructor(private someSharedService: SomeSharedService) { }

  readValue() {
    let valueReadOut = this.someSharedService.globalVar;
    // do something with the value read out
  }
}

মনে রাখবেন যে আপনার টীকায় যোগ করা providers: [ SomeSharedService ]উচিত নয়@Component । এই লাইনটি যুক্ত না করে ইনজেকশন সর্বদা আপনাকে একই উদাহরণ দেবে SomeSharedService। আপনি যদি লাইনটি যুক্ত করেন তবে সদ্য তৈরি হওয়া উদাহরণটি ইনজেকশন দেওয়া হয়।


তবে সরবরাহকারীদের লাইনটি যুক্ত না করেই আমি এর মতো একটি ত্রুটি পেয়েছি:Unhandled Promise rejection: No provider for SomeSharedService
রকি

আমি দেখি. আমার providers: [SomeSharedService]প্যারেন্ট মডিউল ফাইলটিতে যুক্ত করা উচিত । ধন্যবাদ।
রকি

যখন আমরা অলস লোডিং মডিউল থাকি এটি কাজ করে না।
lpradhap

9

আমি সেরা উপায়টি জানি না, তবে আপনি যদি কোনও উপাদানটির অভ্যন্তরে কোনও বৈশ্বিক চলকটি সংজ্ঞায়িত করতে চান তবে সবচেয়ে সহজ উপায় হ'ল এভাবে windowলেখার জন্য ভেরিয়েবল ব্যবহার করা:

window.GlobalVariable = "what ever!"

এটি অন্য জায়গায় বুটস্ট্র্যাপ বা আমদানি করার জন্য আপনাকে পাস করার দরকার নেই এবং এটি বিশ্বব্যাপী সমস্ত জেএস (কেবল কৌণিক 2 উপাদান নয়) অ্যাক্সেসযোগ্য।


1
আমি বলি এটি সবচেয়ে খারাপ উপায়। স্ট্যাটিক ভেরিয়েবল ব্যবহার করা আরও জটিল নয় তবে তাও কুৎসিত নয় ;-)
গন্টার জ্যাচবাউয়ার

2
আমি সম্মত হন এটি পরিচালনা করা কঠিন করে তোলে। তবে আমি প্রযোজনায় কী রাখতে চাই তা না পাওয়া পর্যন্ত আমি তাদের উন্নয়নে ব্যবহার করতে শেষ করেছি। স্ট্যাটিক ভেরিয়েবলগুলিতে আপনাকে এগুলি বারবার আমদানি করতে হবে যেখানে আপনি ব্যবহার করতে চান, পাশে একটি কেস ছিল আমি কৌণিক উপাদানগুলিতে jquery নিয়ে যেতে যেতে আমার দৃষ্টিভঙ্গি তৈরি করছিলাম - কোনও টেম্পলেট ছিল না এবং স্ট্যাটিক ব্যবহার করে উত্পাদিত ডিওমে ইভেন্ট যুক্ত করতে হবে পরিবর্তনশীল ব্যথা হয়।
মাহদি যাদালিহা

1
এছাড়াও, এটি স্থির নয়, আপনি যে কোনও জায়গা থেকে মান পরিবর্তন করতে পারেন!
মাহদি জাদালিহা

1
এটি সার্ভার সাইড রেন্ডারিংকেও নষ্ট করে। উইন্ডো বা ডকুমেন্টটি সরাসরি পরিচালনা থেকে দূরে থাকুন।
এরিক হান

1
একমত। তবে আমি ব্যক্তিগতভাবে আমার জীবনের কোনও গাইডলাইন অনুসরণ করি না (যদি আমি এর চেয়ে আরও ভাল করতে পারি)।
মাহদী জাদালিহ

7

আমি এটি ব্যবহার করার উপায়:

global.ts

export var server: string = 'http://localhost:4200/';
export var var2: number = 2;
export var var3: string = 'var3';

এটি ব্যবহার করতে কেবল এর মতো আমদানি করুন:

import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import * as glob from '../shared/global'; //<== HERE

@Injectable()
export class AuthService {
    private AuhtorizationServer = glob.server
}

সম্পাদনা করা: প্রস্তাবিত হিসাবে ড্রপ "_" উপসর্গ করা হয়েছে।


ব্যক্তিগত সম্পত্তিগুলির জন্য "_" উপসর্গ হিসাবে ব্যবহার করবেন না। github.com/Mic Microsoft
TypeScript/

4

আমি মনে করি সবচেয়ে ভাল উপায় হ'ল আপনার অ্যাপ্লিকেশন জুড়ে বিশ্বব্যাপী ভেরিয়েবলের সাথে কোনও বস্তু ভাগ করে নেওয়া যেখানে আপনি চান সেখানে রফতানি এবং আমদানি করে।

প্রথমে একটি নতুন .ts ফাইল তৈরি করুন উদাহরণস্বরূপ globals.ts এবং একটি বস্তুর ঘোষনা করুন। আমি এটি একটি অবজেক্ট টাইপ দিয়েছি তবে আপনি কোনও প্রকার বা or use ব্যবহার করতে পারেন

export let globalVariables: Object = {
 version: '1.3.3.7',
 author: '0x1ad2',
 everything: 42
};

এর পরে এটি আমদানি করুন

import {globalVariables} from "path/to/your/globals.ts"

এবং এটি ব্যবহার করুন

console.log(globalVariables);

3

আমি @ সুপেরকোবারার উত্তরটি পছন্দ করি তবে আমি ইতিমধ্যে উপলব্ধ এসএস-তে যেমন কনস্ট শব্দটি ব্যবহার করব:

//
// ===== File globals.ts    
//
'use strict';

export const sep='/';
export const version: string="22.2.2"; 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.