टाइपस्क्रिप्ट में वर्गों को घोंसला बनाने का एक तरीका है। जैसे मैं उनका उपयोग करना चाहूंगा:
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();