টাইপস্ক্রিপ্টে নেস্ট ক্লাস করার কোনও উপায় আছে কি? যেমন আমি এগুলি তাদের মতো ব্যবহার করতে চাই:
var foo = new Foo();
var bar = new Foo.Bar();
উত্তর:
টাইপস্ক্রিপ্ট 1.6 দিয়ে শুরু করে আমাদের ক্লাস এক্সপ্রেশন ( রেফারেন্স ) রয়েছে।
এর অর্থ আপনি নিম্নলিখিতটি করতে পারেন:
class Foo {
static Bar = class {
}
}
// works!
var foo = new Foo();
var bar = new Foo.Bar();
ক্লাস এক্সপ্রেশন ব্যবহার করে এখানে আরও জটিল ব্যবহারের মামলা রয়েছে ।
এটি অভ্যন্তরীণ শ্রেণিকে বাইরের শ্রেণীরprivate সদস্যদের অ্যাক্সেস করার অনুমতি দেয় ।
class classX {
private y: number = 0;
public getY(): number { return this.y; }
public utilities = new class {
constructor(public superThis: classX) {
}
public testSetOuterPrivate(target: number) {
this.superThis.y = target;
}
}(this);
}
const x1: classX = new classX();
alert(x1.getY());
x1.utilities.testSetOuterPrivate(4);
alert(x1.getY());
সংকলন ত্রুটি না পেয়ে আমি রফতানি ক্লাসগুলির সাথে এটি কাজ করতে পারি না, পরিবর্তে আমি নেমস্পেস ব্যবহার করেছি :
namespace MyNamespace {
export class Foo { }
}
namespace MyNamespace.Foo {
export class Bar { }
}
আপনি যদি কোনও প্রকারের ঘোষণা ফাইলের প্রসঙ্গে থাকেন তবে আপনি ক্লাস এবং নেমস্পেসগুলি মিশ্রিত করে এটি করতে পারেন:
// foo.d.ts
declare class Foo {
constructor();
fooMethod(): any;
}
declare namespace Foo {
class Bar {
constructor();
barMethod(): any;
}
}
// ...elsewhere
const foo = new Foo();
const bar = new Foo.Bar();