में Destructuring साथ पैरामीटर गुण आशुलिपि का मेल टाइपप्रति, जब हम स्वचालित रूप से निर्माता परिभाषा से हमारी कक्षा में गुण बनाना चाहते हैं, हम जैसे पैरामीटर गुण आशुलिपि का लाभ उठा सकते हैं:टाइपप्रति
class Person {
constructor(public firstName : string, public lastName : number, public age : number) {
}
}
और तो, transpiled जावास्क्रिप्ट हो जाएगा:
var Person = (function() {
function Person(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
return Person;
})();
लेकिन अगर हम हमारे निर्माता में एक वस्तु प्राप्त करना चाहते हैं, यह की तरह कुछ होगा:
class Person {
constructor({firstName, lastName, age} : {firstName: string, lastName: string, age: number}) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
}
प्रश्न:
interface IPerson {
firstName : string,
lastName : string,
age: number
}
class Person {
constructor(person : IPerson) {
this.firstName = person.firstName;
this.lastName = person.lastName;
this.age = person.age;
}
}
टाइपप्रति 1.5 बाद से, हम उदाहरण के destructuring का लाभ उठा सकते हैं कैसे टाइपप्रति में पैरामीटर गुण आशुलिपि और Destructuring गठबंधन करने के लिए?
मैं, वस्तु परिभाषा से पहले public
परिभाषित करने के लिए कोशिश की है उदाहरण के लिए:
class Person {
constructor(public {firstName, lastName, age} : {firstName: string, lastName: string, age: number}) {
}
}
प्रत्येक चर से पहले इसे परिभाषित करने की कोशिश की, उदाहरण के लिए:
class Person {
constructor({public firstName, public lastName, public age} : {firstName: string, lastName: string, age: number}) {
}
}
लेकिन मुझे कोई सफलता मिली। कोई विचार?
क्या आपको पता है कि ब्रांड्स के भीतर विनाशकारी असाइनमेंट को लपेटना क्यों आवश्यक है? मेरा मतलब है उदा। बाहरी '()' '({प्रबंधक: this.manager} = args);'। मैंने पाया कि जब ऑब्जेक्ट गुणों पर मैपिंग आवश्यक हो (जैसे * यह।प्रबंधक *), जबकि स्थानीय चरों पर मैपिंग करते समय आमतौर पर उनकी आवश्यकता नहीं होती है – superjos
[ऑब्जेक्ट डिस्ट्रक्चरिंग सेक्शन] में एक नोट है (https://www.typescriptlang.org/docs/handbook/variable-declarations.html#object- विनाशकारी) टाइपस्क्रिप्ट हैंडबुक का कहना है, "ध्यान दें कि हमें इस कथन को कोष्ठक के साथ घेरना पड़ा था। जावास्क्रिप्ट सामान्य रूप से {ब्लॉक की शुरुआत के रूप में) को पार करता है। तो कारण यह है कि ऐसा लगता है कि यह एक वस्तु विनाश के बजाय एक ब्लॉक था। – Schmalls