मेरे पास एक सामान्य इंटरफ़ेस और दो इंटरफ़ेस "व्यक्ति" और "कर्मचारी" हैं जो पहले वाले का विस्तार करते हैं:

    export interface Common {
        id: number,
        name: string
      }

      export interface Person extends Common {
        age: number;
      }

      export interface Employee extends Common {
        role: string;
      }

मुझे इन इंटरफेस के साथ मिश्रित एक सरणी की आवश्यकता है, उदाहरण के लिए यह:

listOfPeople: Person[] | Employee[] = [{id: 1, name: 'George', age: 4}, {id: 2, name: 'Micheal', role: 'software developer'}];

लेकिन इस तरह मुझे एक त्रुटि मिली। मेरी इच्छा का परिणाम प्राप्त करने का सही तरीका क्या है?

3
Andy88 21 अप्रैल 2021, 12:03

2 जवाब

सबसे बढ़िया उत्तर

आप संघ प्रकार का उपयोग करके प्रकारों को जोड़ सकते हैं और उन्हें listOfPeople के प्रकार के रूप में घोषित कर सकते हैं।

तो यह काम करेगा मुझे लगता है

listOfPeople: (Person|Employee)[]

क्योंकि listOfPeople एक सरणी है जिसमें इनमें से कोई भी हो सकता है। आपको TS को बताना होगा कि यह एक सरणी है।

const listOfPeople: (Person|Employee)[] = [{id: 1, name: 'George', age: 4}, {id: 2, name: 'Micheal', role: 'software developer'}];

3
samuellawrentz 21 अप्रैल 2021, 12:14

इस प्रकार लिखने का एक और (शायद स्पष्ट) तरीका होगा:

listOfPeople: Array<Person | Employee>;
1
rasmusvhansen 21 अप्रैल 2021, 14:05