मान लें कि मेरे पास निम्न प्रकार हैं:

interface FooAction {
    type: "foo";
    data: any;
}

interface BarAction {
    type: "bar";
    data: any;
}

type AllActions = FooAction | BarAction;

AllActions को देखते हुए, मैं type प्रॉपर्टी के आधार पर यूनियन टाइप कैसे जेनरेट करूं? मैं एक प्रकार पुनर्प्राप्त करना चाहता हूं:

type AllTypes = "foo" | "bar"

0
jumbopap 19 सितंबर 2019, 17:30

2 जवाब

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

आप एक इंडेक्स टाइप क्वेरी का उपयोग कर सकते हैं:

type AllTypes = AllActions['type'] // same as "foo" | "bar"
3
Titian Cernicova-Dragomir 19 सितंबर 2019, 17:31

आप करीब थे! चूँकि उन दोनों के पास type संपत्ति है, आप केवल type गुणों को हथियाने के लिए अपने संघ में ["type"] जोड़ सकते हैं।

interface FooAction {
    type: "foo";
    data: any;
}

interface BarAction {
    type: "bar";
    data: any;
}

type AllActions = (FooAction | BarAction)["type"]; // "foo" | "bar"

टाइपस्क्रिप्ट खेल का मैदान

3
skovy 19 सितंबर 2019, 17:31