javascript - ত্রুটি: একটি অভিব্যক্তি চাওয়া যায় না যার ধরণের কল স্বাক্ষরের অভাব রয়েছে




angularjs typescript (5)

"এমন কোনও অভিব্যক্তি চাওয়া যায় না যার ধরণের কল স্বাক্ষরের অভাব রয়েছে" "

আপনার কোডে:

class Post extends Component {
  public toggleBody: string;

  constructor() {
    this.toggleBody = this.setProp('showFullBody');
  }

  public showMore(): boolean {
    return this.toggleBody(true);
  }

  public showLess(): boolean {
    return this.toggleBody(false);
  }
}

আপনার public toggleBody: string; । আপনি কোনও string ফাংশন হিসাবে কল করতে পারবেন না। সুতরাং ত্রুটিগুলি এতে: this.toggleBody(true); এবং this.toggleBody(false);

আমি টাইপস্ক্রিপ্টে একেবারে নতুন এবং আমার দুটি ক্লাস রয়েছে। প্যারেন্ট ক্লাসে আমার রয়েছে:

abstract class Component {
  public deps: any = {};
  public props: any = {};

  public setProp(prop: string): any {
    return <T>(val: T): T => {
      this.props[prop] = val;
      return val;
    };
  }
}

শিশু শ্রেণিতে আমার রয়েছে:

class Post extends Component {
  public toggleBody: string;

  constructor() {
    this.toggleBody = this.setProp('showFullBody');
  }

  public showMore(): boolean {
    return this.toggleBody(true);
  }

  public showLess(): boolean {
    return this.toggleBody(false);
  }
}

শো-মোর এবং শোর লেস উভয়ই আমাকে ত্রুটি দেয়, "এমন কোনও অভিব্যক্তি চাওয়া যায় না যার ধরণের কল স্বাক্ষরের অভাব রয়েছে।"

কিন্তু সেট ফর্মটি যে ফাংশনটি ফিরিয়ে দেয় তাতে কি একটি কল স্বাক্ষর থাকে, আমার মনে হয়? আমি মনে করি ফাংশনগুলির টাইপিংয়ের বিষয়ে আমি গুরুত্বপূর্ণ কিছু ভুল বুঝছি, তবে এটি কী তা আমি জানি না।

ধন্যবাদ!


আপনার চলকটিতে একটি প্রকার যুক্ত করুন এবং তারপরে ফিরে আসুন।

উদাহরণ:

const myVariable : string [] = ['hello', 'there'];

const result = myVaraible.map(x=> {
  return
  {
    x.id
  }
});

=> গুরুত্বপূর্ণ অংশটি স্ট্রিং [] টাইপ ইত্যাদি যুক্ত করছে:


আমি একই ত্রুটি বার্তা ছিল। আমার ক্ষেত্রে আমি export default function myFunc সিনট্যাক্সটি export default function myFunc সাথে const myFunc = require('./myFunc');

module.exports = myFunc; পরিবর্তে সমস্যা সমাধান।


আসুন এটি ভেঙে দিন:

  1. ত্রুটি বলে

    যার প্রকারে কল স্বাক্ষরের অভাব রয়েছে এমন একটি অভিব্যক্তি চাওয়া যায় না।

  2. কোড:

সমস্যাটি এই লাইনে public toggleBody: string; &

এটি এই লাইনের সাথে সম্পর্কিত:

...
return this.toggleBody(true);
...
return this.toggleBody(false);
  1. ফলাফল:

আপনার বলা toggleBody একটি string তবে তারপরে আপনি এটির সাথে এমন আচরণ করছেন যা call signature (যেমন কিছু বলা যেতে পারে এমন কাঠামোর কাঠামো: ল্যাম্বডাস, প্রোক, ফাংশন, পদ্ধতি ইত্যাদি জেএসে কেবলমাত্র ফাংশন থো।)। আপনাকে public toggleBody: (arg: boolean) => boolean; হিসাবে ঘোষণাটি পরিবর্তন করতে হবে public toggleBody: (arg: boolean) => boolean;

অতিরিক্ত বিশদ:

"আহ্বান" অর্থ আপনার কল করা বা কোনও ফাংশন প্রয়োগ করা।

জাভাস্ক্রিপ্টে "একটি অভিব্যক্তি" মূলত এমন কিছু যা মান তৈরি করে, তাই this.toggleBody() একটি অভিব্যক্তি হিসাবে গণ্য।

"টাইপ" এই লাইনে public toggleBody: string ঘোষণা করা হয়

"একটি কল স্বাক্ষরের অভাব রয়েছে" এটি কারণ আপনার this.toggleBody() কল করার চেষ্টা করা হয়েছে this.toggleBody() যার স্বাক্ষর নেই (যেমন বলা যেতে পারে এমন কোনও কাঠামোর কাঠামো: ল্যাম্বডাস, প্রোক, ফাংশন, পদ্ধতি ইত্যাদি) যা হতে পারে বলা হয়। আপনি বলেছিলেন this.toggleBody একটি স্ট্রিংয়ের মতো কাজ করে।

অন্য কথায় ত্রুটিটি বলছে

কোনও এক্সপ্রেশন (এটি.টগলবিডি) কল করতে পারে না কারণ এটি টাইপ (: স্ট্রিং) -এ একটি কল স্বাক্ষর নেই (বিসি এর একটি স্ট্রিং স্বাক্ষর রয়েছে))


এর অর্থ আপনি এমন কিছু কল করার চেষ্টা করছেন যা কোনও ফাংশন নয়

const foo = 'string'
foo() // error




types