আমি যখন টাইপস্ক্রিপ্টের ব্যক্তিগত সদস্যদের অ্যাক্সেস করতে পারি যখন আমার সক্ষম হবেন না?


108

আমি টাইপস্ক্রিপ্টে ব্যক্তিগত সদস্যদের বাস্তবায়নের দিকে নজর দিচ্ছি এবং আমি এটি কিছুটা বিভ্রান্তিকর বলে মনে করি। ইন্টেলিসেন্স ব্যক্তিগত সদস্য অ্যাক্সেস করার অনুমতি দেয় না, তবে খাঁটি জাভাস্ক্রিপ্টে এটি সব আছে। এটি আমাকে ভাবতে বাধ্য করে যে টিএস ব্যক্তিগত সদস্যদের সঠিকভাবে প্রয়োগ করে না। কোন চিন্তা?

class Test{
  private member: any = "private member";
}
alert(new Test().member);

আপনি ভাবছেন যে কেন ইন্টেলিসেন্স আপনাকে সতর্কতার সাথে সারিতে থাকা ব্যক্তিগত সদস্য দেয় না ()?
এজেঞ্জ করুন

7
নাঃ। আমি ভাবছি কেন টিএসের ব্যক্তিগত রয়েছে যখন এটি কেবলমাত্র ইন্টিলিসেন্সের জন্য একটি চিনি, এবং এটি জাভা স্ক্রিপ্টের সাথে সংকলন করে না। এই কোডটি টাইপসক্রিপ্টআলং.আর . / প্লেগ্রাউন্ডে কার্যকর করা হয়েছে ব্যক্তিগত সদস্যের মানকে সতর্ক করে।
সান ফিল্ডম্যান

উল্লিখিত হিসাবে, আপনার ব্যক্তিগত থাকতে আইটেমগুলিকে একটি ব্যক্তিগত প্রসঙ্গে ভেরিয়েবল হিসাবে ঘোষণা করতে হবে। আমি অনুমান করছি টাইপস্ক্রিপ্টটি এটি করে না কারণ এটি প্রোটোটাইপ যুক্ত করে তুলনায় অক্ষম হতে পারে। এটি ধরণের সংজ্ঞা দিয়েও বিভ্রান্ত হয় (ব্যক্তিগত সদস্যরা আসলে শ্রেণীর অংশ হয় না)
শেন

আপনি যদি প্রকৃত ব্যক্তিগত ভেরিয়েবলগুলি প্রোটোটাইপে বিদ্যমান থাকতে চান তবে এটি কিছুটা ওভারহেড লাগবে, তবে আমি ক্লাসজেএস নামে একটি লাইব্রেরি লিখেছি যা গিথহব: github.com/KthProg/ClassJS তে ঠিক এটি করে ।
KthProg

উত্তর:


97

টাইপ চেকিংয়ের মতোই, সদস্যদের গোপনীয়তা কেবল সংকলকটির মধ্যেই প্রয়োগ করা হয়।

একটি ব্যক্তিগত সম্পত্তি নিয়মিত সম্পত্তি হিসাবে প্রয়োগ করা হয়, এবং শ্রেণীর বাইরের কোডটিতে এটি অ্যাক্সেসের অনুমতি নেই।

শ্রেণীর অভ্যন্তরে সত্যিকারের ব্যক্তিগত কিছু করার জন্য, এটি শ্রেণীর সদস্য হতে পারে না, এটি কোডের অভ্যন্তরে কোনও ফাংশন স্কোপের অভ্যন্তরে তৈরি স্থানীয় ভেরিয়েবল হবে যা বস্তু তৈরি করে। এর অর্থ হ'ল আপনি ক্লাসের সদস্যের মতো এটি ব্যবহার করতে পারবেন না, অর্থাত্ thisকীওয়ার্ডটি ব্যবহার করে ।


25
জাভাস্ক্রিপ্ট প্রোগ্রামারটির পক্ষে কোনও অবজেক্ট কনস্ট্রাক্টরে লোকাল ভেরিয়েবল রাখা এবং যদিও এটি ব্যক্তিগত ক্ষেত্র হিসাবে ব্যবহার করা যায় তবে এটি অস্বাভাবিক নয়। আমি অবাক হয়েছি তারা এ জাতীয় কিছু সমর্থন করেনি।
এরিক 0

2
@ এরিক: যেহেতু টাইপস্ক্রিপ্ট কনস্ট্রাক্টরের অভ্যন্তরে প্রোটোটাইপ হিসাবে পদ্ধতিগুলি যুক্ত করার পরিবর্তে পদ্ধতির জন্য প্রোটোটাইপ ব্যবহার করে, কনস্ট্রাক্টরের স্থানীয় ভেরিয়েবল পদ্ধতিগুলি থেকে পৌঁছানো যায় না। ক্লাসের জন্য ফাংশন র‌্যাপারের ভিতরে স্থানীয় পরিবর্তনশীল করা সম্ভব হতে পারে তবে আমি এখনও এটি করার কোনও উপায় খুঁজে পাইনি। যাইহোক, এটি এখনও স্থানীয় পরিবর্তনশীল হবে, এবং কোনও ব্যক্তিগত সদস্য নয়।
গুফা 8

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

বেসরকারী স্থিতিশীল সদস্যদের জন্য আপনি যে সমাধানটি ব্যবহার করতে পারেন তা এখানে রয়েছে: বাসারাট ডটকম
২০১৩

1
@ বাসরতলি: এটি একটি স্ট্যাটিক ভেরিয়েবল যা ক্লাসের পদ্ধতিগুলির অভ্যন্তরে উপলব্ধ, তবে এটি শ্রেণীর সদস্য নয়, অর্থাৎ আপনি thisকীওয়ার্ডটি ব্যবহার করে এটি অ্যাক্সেস করতে পারবেন না ।
গুফা

37

জাভাস্ক্রিপ্ট ব্যক্তিগত ভেরিয়েবল সমর্থন করে।

function MyClass() {
    var myPrivateVar = 3;

    this.doSomething = function() {
        return myPrivateVar++;        
    }
}

টাইপস্ক্রিপ্টে এটি এর মতো প্রকাশ করা হবে:

class MyClass {

    doSomething: () => number;

    constructor() {
        var myPrivateVar = 3;

        this.doSomething = function () {
            return myPrivateVar++;
        }
    }
}

সম্পাদনা

এই পদ্ধতির স্পষ্টতই ব্যবহার করা উচিত যেখানে এটি সম্পূর্ণ প্রয়োজন needed উদাহরণস্বরূপ যদি আপনার অস্থায়ীভাবে একটি পাসওয়ার্ড ক্যাশে করা প্রয়োজন।

এই প্যাটার্নটি ব্যবহার করার জন্য পারফরম্যান্স ব্যয় রয়েছে (জাভাস্ক্রিপ্ট বা টাইপস্ক্রিপ্টের অপ্রাসঙ্গিক) এবং কেবল যেখানে প্রয়োজন সেখানেই ব্যবহার করা উচিত।


var _thisস্কোপড ফাংশনগুলিতে ব্যবহারের জন্য সেট করে টাইপসক্রিপটি কি সব সময় দেয় না? আপনি কেন ক্লাস স্কোপে এটুকু করছিলেন?
DrSammyD

না। ভার _ এটি কেবল এটির একটি রেফারেন্স।
মার্টিন

2
আরও সঠিকভাবে তাদের কন্সট্রাক্টর ভেরিয়েবল বলতে, ব্যক্তিগত নয়। এগুলি প্রোটোটাইপ পদ্ধতিতে দৃশ্যমান নয়।
রোমান এম কোস

1
হ্যাঁ, দুঃখিত, সমস্যাটি পরিবর্তে অন্যটি ছিল, আপনি যে প্রতিটি উদাহরণ তৈরি করেন, ডস কিছু আবার তৈরি করা হবে কারণ এটি প্রোটোটাইপ শৃঙ্খলার অংশ নয়।
বার্বু বার্বু

1
@ বারবুবারবু হ্যাঁ আমি সম্মত। এটি এই পদ্ধতির সাথে একটি বিগ ইস্যু এবং এটি এড়ানোর একটি কারণ।
মার্টিন

11

একবার উইকম্যাপের পক্ষে সমর্থন আরও ব্যাপকভাবে পাওয়া গেলে এখানে একটি আকর্ষণীয় কৌশল রয়েছে যা এখানে # 3 উদাহরণে বিশদভাবে বর্ণনা করা হয়েছে

এটি ব্যক্তিগত ডেটার জন্য অনুমতি দেয় এবং জেসন ইভান্স উদাহরণের কার্যকারিতা ব্যয়কে এড়ানো যায় কেবল উদাহরণ পদ্ধতির পরিবর্তে প্রোটোটাইপ পদ্ধতি থেকে ডেটা অ্যাক্সেসযোগ্য।

লিঙ্কযুক্ত MDN WeakMap পৃষ্ঠাটি ক্রোম 36, ফায়ারফক্স 6.0, আইই 11, অপেরা 23 এবং সাফারি 7.1 এ ব্রাউজার সমর্থন সমর্থন করে।

let _counter = new WeakMap();
let _action = new WeakMap();
class Countdown {
  constructor(counter, action) {
    _counter.set(this, counter);
    _action.set(this, action);
  }
  decrement() {
    let counter = _counter.get(this);
    if (counter < 1) return;
    counter--;
    _counter.set(this, counter);
    if (counter === 0) {
      _action.get(this)();
    }
  }
}

আমি এটা পছন্দ! মূলত এর অর্থ ব্যক্তিগত সম্পত্তি একত্রিত শ্রেণিতে লুকানো। সর্বাধিক মজা হবে ... protectedপরামিতিগুলির জন্য সমর্থন কীভাবে ? : ডি
রোমান এম কোস

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

1
এমডিএন পৃষ্ঠা থেকে: বিকাশকারী.মোজিলা.অর্গ / en- ইউএস / ডকস / ওয়েব / জাভা স্ক্রিপ্ট / রেফারেন্স / । বিপরীতে, নেটিভ উইকম্যাপস মূল বিষয়গুলির "দুর্বল" রেফারেন্সগুলি ধারণ করে, যার অর্থ মূল বস্তুর সাথে অন্য কোনও উল্লেখ না থাকলে ক্ষেত্রে তারা আবর্জনা সংগ্রহ রোধ করে না। এটি মানচিত্রে মান আবর্জনা সংগ্রহ রোধও এড়ায়।
রায়ান টমাস

@ রায়ান থমাস সত্য, আমি এটি কিছুক্ষণ আগে রেখেছিলাম একটি পুরানো মন্তব্য ছিল। মানচিত্রের বিপরীতে উইকম্যাপগুলি মেমরি ফাঁসের কারণ হবে না। সুতরাং এই কৌশলটি ব্যবহার করা নিরাপদ।
রামটিন সোলতানি

@ রমতিনসোলতানি তাই আপনার পুরানো মন্তব্যটি মুছুন?>
এরিক

10

যেহেতু টাইপস্ক্রিপ্ট ৩.৮ প্রকাশিত হবে আপনি এমন ব্যক্তিগত ক্ষেত্রটি ঘোষণা করতে সক্ষম হবেন যা ধারণক্ষম শ্রেণীর বাইরেও অ্যাক্সেস করা যায় না এমনকি সনাক্ত করা যায় না

class Person {
    #name: string

    constructor(name: string) {
        this.#name = name;
    }

    greet() {
        console.log(`Hello, my name is ${this.#name}!`);
    }
}

let jeremy = new Person("Jeremy Bearimy");

jeremy.#name
//     ~~~~~
// Property '#name' is not accessible outside class 'Person'
// because it has a private identifier.

ব্যক্তিগত ক্ষেত্রগুলি #চরিত্র দিয়ে শুরু হয়

দয়া করে মনে রাখবেন যে এই ব্যক্তিগত ক্ষেত্রগুলি privateকীওয়ার্ড সহ চিহ্নিত ক্ষেত্রগুলির চেয়ে আলাদা কিছু হবে

সূত্র। https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/


4

এই বিষয়ে সরকারী আলোচনার লিঙ্কটির জন্য শান ফিল্ডম্যানকে ধন্যবাদ - লিঙ্কটির জন্য তার উত্তর দেখুন ।

তিনি যে আলোচনার সাথে যুক্ত ছিলেন আমি তা পড়েছি এবং এখানে মূল পয়েন্টগুলির সংক্ষিপ্তসার রয়েছে:

  • পরামর্শ: কনস্ট্রাক্টর মধ্যে ব্যক্তিগত সম্পত্তি
    • সমস্যা: প্রোটোটাইপ ফাংশন থেকে অ্যাক্সেস করতে পারে না
  • পরামর্শ: কনস্ট্রাক্টর মধ্যে ব্যক্তিগত পদ্ধতি
    • সমস্যাগুলি: বৈশিষ্ট্যগুলির মতো একই, আপনি প্রোটোটাইপে প্রতি ক্লাসে একবার ফাংশন তৈরির কার্যকারিতা সুবিধা হারাবেন; পরিবর্তে আপনি প্রতিটি উদাহরণের জন্য ফাংশনটির একটি অনুলিপি তৈরি করেন
  • পরামর্শ: বিমূর্ত সম্পত্তি অ্যাক্সেস এবং দৃশ্যমানতা প্রয়োগ করতে বয়লারপ্লেট যুক্ত করুন
    • সমস্যা: বড় কর্মক্ষমতা ওভারহেড; TypeScript বড় অ্যাপ্লিকেশনগুলির জন্য ডিজাইন করা হয়েছে
  • পরামর্শ: টাইপসক্রিপ্ট ইতিমধ্যে নির্মাণে নির্মাণকারী এবং প্রোটোটাইপ পদ্ধতির সংজ্ঞাগুলি মোড়ানো; ব্যক্তিগত পদ্ধতি এবং সম্পত্তি সেখানে রাখুন
    • এই বন্ধে ব্যক্তিগত সম্পত্তি রাখার ক্ষেত্রে সমস্যাগুলি: তারা স্থির পরিবর্তনশীল হয়; উদাহরণস্বরূপ এক নেই
    • এই ক্লোজারে ব্যক্তিগত পদ্ধতি স্থাপনে সমস্যাগুলি:this কোনও ধরণের কাজের ভিত্তিতে তাদের অ্যাক্সেস নেই
  • পরামর্শ: স্বয়ংক্রিয়ভাবে ব্যক্তিগত ভেরিয়েবলের নাম ম্যাগ করে
    • পাল্টা যুক্তি: এটি একটি নামকরণের সম্মেলন, কোনও ভাষা নির্মাণ নয়। নিজেই তা মাঙ্গাও
  • পরামর্শ:@private এমন মিনিফায়ার্স সহ ব্যক্তিগত পদ্ধতিগুলি টীকা দিন যা স্বীকৃতি দেয় যে টীকাটি কার্যকরভাবে পদ্ধতির নামগুলি ছোট করতে পারে
    • এটির কোনও গুরুত্বপূর্ণ পাল্টা যুক্তি নেই

নির্গত কোডে দৃশ্যমান সমর্থন যোগ করার সামগ্রিক পাল্টা যুক্তি:

  • সমস্যাটি হ'ল জাভাস্ক্রিপ্টে নিজেই ভিজিবিলিটি মডিফায়ার নেই - এটি টাইপস্ক্রিপ্টের সমস্যা নয়
  • জাভাস্ক্রিপ্ট সম্প্রদায়ের মধ্যে ইতিমধ্যে একটি প্রতিষ্ঠিত প্যাটার্ন রয়েছে: একটি ব্যক্তিগত আন্ডারস্কোর সহ ব্যক্তিগত সম্পত্তি এবং পদ্ধতিগুলির উপসর্গ, যা "আপনার নিজের ঝুঁকিতে এগিয়ে যান" বলে
  • যখন টাইপস্ক্রিপ্ট ডিজাইনাররা বলেছিলেন যে সত্যিকারের ব্যক্তিগত সম্পত্তি এবং পদ্ধতিগুলি "সম্ভব" নয়, তখন তাদের অর্থ "আমাদের নকশার সীমাবদ্ধতার অধীনে সম্ভব নয়", বিশেষত:
    • নিঃসৃত জেএস হ'ল মূর্তিযুক্ত
    • বয়লারপ্লেট ন্যূনতম
    • সাধারণ জেএস ওওপির তুলনায় কোনও অতিরিক্ত ওভারহেড নেই

যদি এই কথার উত্তরটি এই কথোপকথন থেকে পাওয়া যায়: টাইপসক্রিপ্ট কোড কোডএক্স / ডিস্কিউশন / 397651 -, দয়া করে একটি লিঙ্ক সরবরাহ করুন: ডি
রোমান এম কোস

1
হ্যাঁ, এটিই কথোপকথন - তবে আমি এই প্রশ্নের সান ফিল্ডম্যানের উত্তরের সাথে লিঙ্ক করেছি , যেখানে তিনি লিঙ্কটি সরবরাহ করেন। যেহেতু তিনি লিঙ্কটি সন্ধানের কাজটি করেছিলেন, তাই আমি তাকে কৃতিত্ব দিতে চাই।
আলেকজান্দ্রবার্ড

2

টাইপস্ক্রিপ্টে ব্যক্তিগত ফাংশনগুলি কেবল শ্রেণীর অভ্যন্তরে প্রবেশযোগ্য। মত

এখানে চিত্র বর্ণনা লিখুন

এবং আপনি কোনও ব্যক্তিগত সদস্যকে অ্যাক্সেস করার চেষ্টা করার সময় এটি একটি ত্রুটি দেখাবে। এখানে উদাহরণ:

এখানে চিত্র বর্ণনা লিখুন

দ্রষ্টব্য: এটি জাভাস্ক্রিপ্টের সাথে ঠিক থাকবে এবং উভয় ফাংশনই বাইরে প্রবেশযোগ্য।


4
ওপি: "তবে খাঁটি জাভাস্ক্রিপ্টে এটি সব আছে" - আমি মনে করি না যে উত্সাহিত জাভাস্ক্রিপ্টটি "ব্যক্তিগত" ফাংশনগুলি প্রকাশ্যে প্রকাশ করে - আপনি এই সমস্যাটির সমাধান করেছেন
অ্যালেক্সানবার্ড

1
@ আলেক্সানবার্ডবার্ড আমি মনে করি যে তিনি বলতে চেয়েছিলেন যে সাধারণত টাইপস্ক্রিপ্টই যথেষ্ট। আমরা যখন টাইপস্ক্রিপ্টে বিকাশ করি তখন আমরা প্রকল্পের স্কোপে এটির সাথে থাকি, তাই জাভাস্ক্রিপ্টের গোপনীয়তা কোনও বড় বিষয় নয়। কারণ সবার আগে, মূল কোডটি বিকাশকারীদের জন্য স্থানান্তরিত হয় না (ট্রান্সপ্লাইড নয় (জাভাস্ক্রিপ্ট))।
রোমান এম কোস

1
আপনি যদি কোনও জাভাস্ক্রিপ্ট লাইব্রেরি লিখেন এবং প্রকাশ না করেন তবে ট্রান্সপ্লার্ড কোডটি কোনও ব্যাপার নয়
আলেকজানবার্ড

আপনার উত্তর অফ-বিষয়।
ক্যানব্যাক্স 16:25

1

আমি বুঝতে পেরেছি এটি একটি পুরানো আলোচনা তবে এটি সঙ্কলিত জাভাস্ক্রিপ্ট শ্রেণীর পাবলিক ইন্টারফেসের মধ্যে টাইপস্ক্রিপ্ট "ফাঁস" এর মধ্যে ব্যক্তিগতভাবে অনুমিত বেসরকারী ভেরিয়েবল এবং পদ্ধতিগুলির সমস্যার সমাধানটি সমাধান করা এখনও কার্যকর হতে পারে।

আমার কাছে এই ইস্যুটি নিখুঁতভাবে প্রসাধনী, যখন ডেভটুলগুলিতে কোনও দৃষ্টান্ত পরিবর্তনশীল দেখা যায় তখন এটি সমস্ত ভিজ্যুয়াল ক্লোটার about আমার ফিক্সটি হ'ল অন্য ক্লাসের মধ্যে একসাথে বেসরকারী ঘোষণাগুলি গোষ্ঠীভুক্ত করা যা পরে মূল শ্রেণিতে ইনস্ট্যান্ট করা হয় এবং privateএকটি __(ডাবল আন্ডারস্কোর) নামের একটি ভেরিয়েবলের (তবে এখনও জেএসে প্রকাশ্যে দৃশ্যমান) নির্ধারিত হয় ।

উদাহরণ:

class Privates {
    readonly DEFAULT_MULTIPLIER = 2;
    foo: number;
    bar: number;

    someMethod = (multiplier: number = this.DEFAULT_MULTIPLIER) => {
        return multiplier * (this.foo + this.bar);
    }

    private _class: MyClass;

    constructor(_class: MyClass) {
        this._class = _class;
    }
}

export class MyClass {
    private __: Privates = new Privates(this);

    constructor(foo: number, bar: number, baz: number) {
        // assign private property values...
        this.__.foo = foo;
        this.__.bar = bar;

        // assign public property values...
        this.baz = baz;
    }

    baz: number;

    print = () => {
        console.log(`foo=${this.__.foo}, bar=${this.__.bar}`);
        console.log(`someMethod returns ${this.__.someMethod()}`);
    }
}

let myClass = new MyClass(1, 2, 3);

myClassউদাহরণটি যখন ডিভটুলগুলিতে দেখা হয়, তার সমস্ত "প্রাইভেট" সদস্যকে সত্যিকারের জনসাধারণের সাথে সংমিশ্রিত না করে (যা সঠিকভাবে রিফ্যাক্টর রিয়েল-লাইফ কোডে খুব চাক্ষুষরূপে অগোছালো হয়ে উঠতে পারে) আপনি তাদের ধসে পড়া __সম্পত্তির মধ্যে ঝরঝরে গ্রুপবদ্ধ দেখতে পাবেন :

এখানে চিত্র বর্ণনা লিখুন


1
আমি এটা পছন্দ করি. দেখে মনে হচ্ছে পরিষ্কার।

0

যথাযথ ব্যক্তিগত সম্পত্তি যুক্ত করার জন্য এখানে পুনরায় ব্যবহারযোগ্য পদ্ধতি:

/**
 * Implements proper private properties.
 */
export class Private<K extends object, V> {

    private propMap = new WeakMap<K, V>();

    get(obj: K): V {
        return this.propMap.get(obj)!;
    }

    set(obj: K, val: V) {
        this.propMap.set(obj, val);
    }
}

ধরা যাক আপনার Clientকোথাও ক্লাস রয়েছে যার জন্য দুটি ব্যক্তিগত সম্পত্তি প্রয়োজন:

  • prop1: string
  • prop2: number

নীচে আপনি কীভাবে এটি বাস্তবায়ন করেছেন:

// our private properties:
interface ClientPrivate {
    prop1: string;
    prop2: number;
}

// private properties for all Client instances:
const pp = new Private<Client, ClientPrivate>();

class Client {
    constructor() {
        pp.set(this, {
            prop1: 'hello',
            prop2: 123
        });
    }

    someMethod() {
        const privateProps = pp.get(this);

        const prop1 = privateProps.prop1;
        const prop2 = privateProps.prop2;
    }
}

এবং যদি আপনার কেবলমাত্র একটি একক ব্যক্তিগত সম্পত্তি হয় তবে এটি আরও সহজ হয়ে যায়, কারণ আপনাকে ClientPrivateসে ক্ষেত্রে কোনও সংজ্ঞা দেওয়ার দরকার নেই ।

লক্ষণীয় যে, বেশিরভাগ অংশের জন্য, শ্রেণি Privateকেবল একটি দুর্দান্তভাবে পঠনযোগ্য স্বাক্ষর সরবরাহ করে, যেখানে সরাসরি ব্যবহার WeakMapনা করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.