मैं टाइपस्क्रिप्ट में "यह" के स्कूपिंग से निपटने के लिए सबसे अच्छे दृष्टिकोण के बारे में निश्चित नहीं हूं।
यहाँ एक सामान्य पैटर्न का उदाहरण दिया गया है जिसे मैं टाइपस्क्रिप्ट में परिवर्तित कर रहा हूँ:
class DemonstrateScopingProblems {
private status = "blah";
public run() {
alert(this.status);
}
}
var thisTest = new DemonstrateScopingProblems();
// works as expected, displays "blah":
thisTest.run();
// doesn't work; this is scoped to be the document so this.status is undefined:
$(document).ready(thisTest.run);
अब, मैं कॉल को बदल सकता था ...
$(document).ready(thisTest.run.bind(thisTest));
... जो काम करता है। लेकिन यह थोड़े भयानक है। इसका मतलब है कि कोड कुछ परिस्थितियों में सभी को संकलित और ठीक काम कर सकता है, लेकिन अगर हम उस दायरे को बांधना भूल जाते हैं तो यह टूट जाएगा।
मैं इसे कक्षा के भीतर करने का एक तरीका चाहूंगा, ताकि कक्षा का उपयोग करते समय हमें इस बारे में चिंता करने की आवश्यकता न हो कि "यह" क्या है।
कोई सुझाव?
अपडेट करें
एक अन्य दृष्टिकोण जो वसा तीर का उपयोग कर रहा है:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
क्या यह एक मान्य दृष्टिकोण है?