কীভাবে ওয়েবস্টর্মে টন অবলম্বিত ভেরিয়েবলের সতর্কতার সাথে লড়াই করবেন?


110

আমার একটি ফাংশন রয়েছে যা সার্ভার থেকে ডেটা নেয়:

function getData(data){
    console.log(data.someVar);
}

ওয়েবস্টর্ম বলে যে someVar- একটি অমীমাংসিত পরিবর্তনশীল। আমি এই ধরনের সতর্কতা থেকে কী মুক্তি পেতে পারি?

আমি বেশ কয়েকটি বিকল্প দেখতে পাচ্ছি:

  • আদর্শ সেটিংসে সতর্কতা দমন করুন;
  • ক্ষেত্রগুলি ( বিশদ ) সহ একটি জেসন উত্স ফাইল যুক্ত করুন ;
  • ব্যবহারের অ্যারে মত শব্দবিন্যাস: data['some_unres_var'];

এছাড়াও ওয়েবস্টর্ম আমাকে "ডেটা" ( /** @namespace data.some_unres_var*/যেমন একটি টীকা যুক্ত করুন ) এর জন্য নেমস্পেস তৈরি করতে, এই জাতীয় ক্ষেত্র তৈরি করতে, বা এর নাম পরিবর্তন করার প্রস্তাব দিচ্ছে ।


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

উত্তর:


102

জেএসডোক ব্যবহার করুন:

/**
 * @param {{some_unres_var:string}} data
 */
function getData(data){
    console.log(data.some_unres_var);
}

8
ভেরিয়েবলগুলির জন্য এই বাক্য /** * @type {Object} * @property {string} sortval - value to sort by */ var a;
গঠনটি

3
ফাংশনটি যখন একটি অজ্ঞাতনামা ফাংশন হয় আপনি কী করবেন? যেমন ........। তারপর (ফাংশন (ডেটা) {....})
ডেভিড ভি।

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

@Borislemke: এই উত্তরটি প্যারামিটার নয় এমন ভেরিয়েবলগুলির জন্য কাজ করবে না। সাধারণ সমাধানটি হল @ नेमস্পেস ব্যবহার করা
ড্যান ড্যাসকলেসকু

45

জেএসডোক অবজেক্ট। তার সদস্যরা।

/**
 * @param data          Information about the object.
 * @param data.member   Information about the object's members.
 */
function getData(data){
    console.log(data.member);
}
  • @property স্থানীয় ভেরিয়েবলের জন্য (পরামিতিবিহীন)
  • পাইচার্মে পরীক্ষিত। @ নিকলি নিশ্চিত করেছে যে এটি ওয়েবস্টর্মে কাজ করে।
  • {{ member:type }}সিনট্যাক্স আন্দ্রিয়াস জ্যাঙ্গো টেমপ্লেট সঙ্গে বিরোধ করতে পারে সুপারিশ করেছে।
  • @ পেপার উইকির উদ্ধৃতি দিয়ে জনি বুচাননের উত্তরের জন্য ধন্যবাদ ।

বস্তুর অ্যারে ডকুমেন্ট করতে , []জেএসডকের পরামর্শ অনুযায়ী বন্ধনী ব্যবহার করুন :

/**
 * @param data
 * @param data.array_member[].foo
 */

পরামিতি নয় এমন ভেরিয়েবলগুলির কী হবে? সাধারণ সমাধানটি হল @ नेमস্পেস ব্যবহার করা
ড্যান ড্যাসকলেসকু

1
জটিল বস্তুর ওয়েবস্টোরমে কাজ করার জন্য আমি এই স্বরলিপিটি নিশ্চিত করতে পারি।
নিকোলি

18

অন্যান্য সমস্ত উত্তর সাধারণ ক্ষেত্রে ভুল। যদি আপনি dataপ্যারামিটার হিসাবে না পান ? আপনার তখন জেএসডক নেই:

function niceApiCall(parameters) {
  const result = await ...  // HTTP call to the API here
  for (const e of result.entries) {
    .. // decorate each entry in the result
  }
  return result;
}

ওয়েবস্টোরম সতর্ক করবে যে "রেজাল্ট.এন্ট্রি" একটি অমীমাংসিত ভেরিয়েবল (ক্ষেত্র)।

সাধারণ সমাধানটি হল একটি @namespaceঘোষণা যুক্ত করা:

function niceApiCall(parameters) {
  /** @namespace result.entries **/
  const result = await ...  // HTTP call to the API here
  for (const e of result.entries) {
    .. // decorate each entry in the result
  }
  return result;
}

2
এই সমাধানের জন্য ধন্যবাদ। আমি একটি এপিআই থেকে অনেকগুলি বৈশিষ্ট্য ফিরে পেয়েছি সুতরাং আপনার কৌশলটি ব্যবহার করে আমার ধারণা আমি এই জাতীয় ত্রুটিগুলি এড়াতে তাদের অনেকগুলি তালিকাবদ্ধ করতে হবে: `` `/ ** @namespace req.headers.signaturecertchainurl / / @ নেমস্পেস req.headers.signature / / @namespace req.headers.slots / / @namespace req.headers.nutrientslot ** / `` একটি উচ্চ স্তরের নেমস্পেস (উদাঃ req.headers) তৈরি করার এবং স্বয়ংক্রিয়ভাবে শিশুদের এটিতে দেওয়ার জন্য কি কোনও উপায় আছে ? (মন্তব্যে বিন্যাস না করার জন্য দুঃখিত!)
জেমস 11

@ জেমস: এটি একটি ভাল প্রশ্ন, এবং আমি কমপক্ষে প্রতি লাইনে ফিল্ডের চেয়ে আরও বেশি তালিকা তৈরি করার জন্যও (সফলতা ছাড়াই) দেখেছি।
ড্যান ড্যাসক্লেস্কু

6

বুদ্ধিমান ফাংশন এক্সপ্রেশন সহ একটি ডামি জেএস ফাইল ব্যবহার করে জেএসন আক্ষরিক প্রত্যাবর্তন করা হবে, যেমনটি http://devnet.jetbrains.com/message/5366907 তে লিখিত হয়েছে , এর সমাধান হতে পারে। আমি জাল ভেরিয়েবল তৈরির পরামর্শও দিতে পারি যা এই জসন মানটি ধরে রাখবে, এবং ওয়েবস্পটর্মকে আসল প্রকারটি কী তা জানতে দেওয়ার জন্য @ ভরাট টীকাটির মান হিসাবে এই ভেরটি ব্যবহার করুন। ভালো লেগেছে:

var jsontext = {"some_unres_var":"val"};
/** @param {jsontext} data */
function getData(data){
    console.log(data.some_unres_var);
}

Http://devnet.jetbrains.com/message/5504337#5504337 এও দেখুন


1
জেটব্রেইনস ফোরামে এলেনার পরামর্শটি একটি অদ্ভুত সমাধান । সাধারণ সমাধানটি হল @ नेमস্পেস ব্যবহার করা
ড্যান ড্যাসক্লেস্কু

3

ধ্বংসাত্মক ব্যবহার, লুক।

function getData(data){
    const {member} = data;
    console.log(member);
}

-1

ওয়েবস্টোরম আইডিইতে সতর্কতাগুলি সরাতে আপনি কেবল এগুলির জন্য পরিদর্শন বিকল্পগুলি চেক করতে পারেন:

  • অমীমাংসিত জাভাস্ক্রিপ্ট ফাংশন
  • অমীমাংসিত জাভাস্ক্রিপ্ট পরিবর্তনশীল

PS । এটি আইডিইতে থাকা সতর্কতাগুলি সরিয়ে ফেলবে, তবে আমি মনে করি না এটি সেরা ধারণা, কারণ আমরা ওয়েবস্টর্মের মতো আইডিইতে একটি সেরা উপযোগীতা হারাব যা আমাদের কোডের গুণমানকে আরও খারাপ করতে পারে।

তবুও, আপনি মেনুতে অনুসরণ করতে চাইলে: ফাইল > সেটিংস > সম্পাদক > পরিদর্শনগুলি আমরা জাভাস্ক্রিপ্ট সতর্কতাগুলিকে অক্ষম করতে পারি

নীচের ছবির মত:

অপশন চেক করুন


এটি একটি খারাপ ধারণা, কারণ এটি জেএস সম্পাদনা করার জন্য আইডিই ব্যবহার করার প্রচুর উপযোগিতা সরিয়ে দেবে। মুল বক্তব্যটি হচ্ছে জাভাস্ক্রিপ্ট ডট-নোটেশন ব্যবহার করা পরিদর্শনকে বিভ্রান্ত করে, এমন নয় যে পরিদর্শনটি অক্ষম করা উচিত।
হ্যারিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.