सभी फ़ंक्शन रिटर्न प्रकारों को कैसे निकालें

const t = {
    fn1: a => ({test1: 1}),
    fn2: b => ({test2: 1}),
    fn3: c => ({test3: 1}),
}

let a: ReturnType<typeof t["fn1"]> | ReturnType<typeof t["fn2"]> | ReturnType<typeof t["fn3"]>;
//or
let b: ReturnType<typeof t["fn1"] |  typeof t["fn2"] | typeof t["fn3"]>;

क्या सभी प्रकार के fn1, fn2... को एक ही प्रकार में गतिशील रूप से मैप करना संभव है? तो उससे छुटकारा पाएं ReturnType<typeof t["fn1"]> | ReturnType<typeof t["fn2"]>

0
trnj 22 नवम्बर 2021, 17:55

1 उत्तर

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

आप t की सभी संभावित कुंजियों तक पहुंचने के लिए बस keyof typeof t का उपयोग करके इसे गतिशील रूप से मैप कर सकते हैं, अर्थात:

let a: ReturnType<typeof t[keyof typeof t]>;

इससे इस प्रकार का अनुमान लगाया जाएगा:

let a: {
    test1: number;
} | {
    test2: number;
} | {
    test3: number;
}

सबूत अवधारणा-का-टाइपप्रति खेल का मैदान (मैं अप्रयुक्त मानकों को हटा दिया है पर मिलते हैं, { डेमो उद्देश्यों के लिए a, b और c)।

2
Terry 22 नवम्बर 2021, 18:02