2016-01-13 7 views
5

मैं किसी ऑब्जेक्ट को कक्षा के निर्माता के लिए तर्क के रूप में पास करना चाहता हूं। विकल्प ऑब्जेक्ट की कुछ कुंजी वैकल्पिक हैं।विकल्प तर्क में वैकल्पिक पैरामीटर के लिए डिफ़ॉल्ट मान

क्या टाइपस्क्रिप्ट में निम्नलिखित को पूरा करने का एक बेहतर/अधिक मूर्ख तरीका है? धन्यवाद

class Car { 
    color: number; 
    numberOfWheels: number; 

    constructor (options: {color: number, numberOfWheels?: number}) { 
     options.numberOfWheels |= 4; 

     this.color = options.color; 
     this.numberOfWheels = options.numberOfWheels; 
    } 
} 

उत्तर

4

इसके बजाय if (options.numberOfWheels === void 0) { options.numberOfWheels = 4; } का उपयोग करें। (अन्यथा 0 या NaN ... 4 भी होगा)

इसके अलावा आप जो करते हैं वह वास्तव में बहुत चालाक है और यह सबसे अच्छा है जो आप कर सकते हैं। चीज़ें है कि तरह काम करेगा नहीं:

constructor (options: {color: number, numberOfWheels?: number} = {color: options.color}) 
2

आप इस के लिए destructuring उपयोग कर सकते हैं:

class Car { 
    color: number; 
    numberOfWheels: number; 

    constructor ({color, numberOfWheels = 4}: {color: number, numberOfWheels?: number}) { 
     this.color = color; 
     this.numberOfWheels = numberOfWheels; 
    } 
} 

वैकल्पिक रूप से ...

constructor (options: {color: number, numberOfWheels?: number}) { 
    let {color, numberOfWheels = 4} = options; 

    this.color = color; 
    this.numberOfWheels = numberOfWheels; 
} 
0

मैं टाइपप्रति नवीनतम और stabled संस्करण का उपयोग कर रहा हूँ वीएससीओडी के साथ जून 2017 तक।

हम नीचे दिए गए अपहरण का उपयोग करके वैकल्पिक पैरामीटर और डिफ़ॉल्ट मान प्राप्त कर सकते हैं।

export class Searcher { 
    createLog(message: string = "Default: No Message!") { 
    console.log(message); 
    } 
} 

Optional and Default valued parameters in TypeScript के बारे में जानने के लिए अच्छा संदर्भ लिंक।

मुझे आशा है कि इससे मदद मिलती है!

संबंधित मुद्दे