TypeScript Academy · पाठ

वैरिएडिक फ़ंक्शन के प्रकार निर्धारित करना

वैरिएडिक टपल प्रकारों से लचीले API बनाएँ।

पाठ 4, कुल 4 में से13 चरण

वैरिएडिक फ़ंक्शन के प्रकार निर्धारित करना, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

जेनेरिक परिवर्ती-तर्क फ़ंक्शन

परिवर्ती-तर्क वाले टपल प्रकार जेनेरिक को तर्क-सूचियों को कैप्चर और उनमें बदलाव करने देते हैं। इससे ऐसे उपयोगिता साधन बनाए जा सकते हैं जो टपल जोड़ते हैं, पैरामीटर आगे भेजते हैं और पूरी प्रकार-सुरक्षा के साथ कॉल सिग्नेचर का रूप बदलते हैं।

तर्कों को टपल के रूप में कैप्चर करना

unknown[] तक सीमित जेनेरिक, पूरी तर्क-सूची को टपल प्रकार T के रूप में कैप्चर कर सकता है। इससे हर पैरामीटर का प्रकार और स्थान सुरक्षित रहता है।

function tuple<T extends unknown[]>(...args: T): T {
  return args
}
const t = tuple("a", 1, true) // type [string, number, boolean]
console.log(t)

जेनेरिक टपल को स्प्रेड करना

आप कैप्चर किए गए जेनेरिक टपल को किसी दूसरी पैरामीटर सूची में स्प्रेड कर सकते हैं। इससे तर्क आगे भेजे जाते हैं और उनके सटीक प्रकार सुरक्षित रहते हैं।

function wrap<T extends unknown[]>(fn: (...args: T) => void) {
  return (...args: T) => fn(...args)
}
const log = wrap((n: number, s: string) => console.log(n, s))
log(1, "hi")

दो टपल जोड़ना

टपल को मिलाते समय परिवर्ती-तर्क वाले टपल प्रकार विशेष रूप से उपयोगी होते हैं। रिटर्न प्रकार में दो जेनेरिक टपल को स्प्रेड करने पर उनका संयोजन प्राप्त होता है।

function concat<A extends unknown[], B extends unknown[]>(a: A, b: B): [...A, ...B] {
  return [...a, ...b]
}
const r = concat([1, 2], ["a"]) // [number, number, string]
console.log(r)

परिणाम प्रकार सटीक क्यों है

क्योंकि [...A, ...B] जेनेरिक टपल को स्प्रेड करता है, इसलिए परिणाम केवल विस्तारित यूनियन ऐरे नहीं होता, बल्कि हर तत्व का प्रकार और क्रम सुरक्षित रखता है।

function concat<A extends unknown[], B extends unknown[]>(a: A, b: B): [...A, ...B] {
  return [...a, ...b]
}
const r = concat([true], [42])
const flag: boolean = r[0]
const num: number = r[1]
console.log(flag, num)

एक तर्क को आगे जोड़ना

परिवर्ती-तर्क वाले टपल आपको पैरामीटर सूचियों का रूप बदलने देते हैं—उदाहरण के लिए, ऐसा फ़ंक्शन बनाना जो कॉलबैक के सिग्नेचर की शुरुआत में एक तर्क जोड़ता है।

function withId<T extends unknown[]>(fn: (...args: T) => void) {
  return (id: number, ...rest: T) => {
    console.log("id", id)
    fn(...rest)
  }
}
const f = withId((msg: string) => console.log(msg))
f(7, "hello")

हेड प्रकार निकालना

टपल पैरामीटर के साथ, आप लेबल वाले टपल का उपयोग करके पहले तत्व के प्रकार को बाकी भाग से अलग कर सकते हैं, फिर दोनों भागों पर अलग-अलग काम कर सकते हैं।

function head<H, T extends unknown[]>(...args: [H, ...T]): H {
  return args[0]
}
const h = head("first", 2, 3) // type string
console.log(h)

पैरामीटर उपयोगिता प्रकार

अंतर्निर्मित Parameters<F> किसी फ़ंक्शन की तर्क-सूची को टपल के रूप में निकालता है—और यह स्वयं परिवर्ती-तर्क वाले टपल प्रकारों पर आधारित है। आप किसी सिग्नेचर के पैरामीटर को अन्य स्थानों पर फिर से उपयोग कर सकते हैं।

function greet(name: string, age: number) {}
type GreetArgs = Parameters<typeof greet> // [string, number]
const args: GreetArgs = ["Ada", 36]
console.log(args)

पैरामीटर के साथ तर्क आगे भेजना

Parameters को रेस्ट स्प्रेड के साथ मिलाकर ऐसा रैपर बनाएँ जो समान प्रकार-निर्धारण के साथ किसी मौजूदा फ़ंक्शन को तर्क आगे भेजे।

function add(a: number, b: number) { return a + b }
function traced(...args: Parameters<typeof add>): number {
  console.log("calling add", args)
  return add(...args)
}
console.log(traced(2, 3))

करी-जैसे सिग्नेचर का निर्माण

परिवर्ती-तर्क वाले टपल आंशिक-प्रयोग सहायक साधन बनाने देते हैं: कुछ तर्क अभी कैप्चर करें और बाकी बाद में लें—हर चरण का प्रकार जाँचा जाता है।

function partial<A extends unknown[], B extends unknown[], R>(
  fn: (...args: [...A, ...B]) => R,
  ...a: A
) {
  return (...b: B) => fn(...a, ...b)
}
const addThree = (x: number, y: number, z: number) => x + y + z
const add5 = partial(addThree, 5)
console.log(add5(2, 3)) // 10

शक्ति और सावधानी

परिवर्ती-तर्क वाले जेनेरिक टपल आपको सटीक और दोबारा उपयोग किए जा सकने वाले फ़ंक्शन-रूप उपकरण देते हैं—रैपर, फ़ॉरवर्डर और संयोजक। ये उन्नत साधन हैं, इसलिए इनका उपयोग तभी करें जब प्रकार की सटीकता वास्तव में लाभ दे।

function pipe2<A extends unknown[], B, C>(
  f: (...a: A) => B,
  g: (b: B) => C
) {
  return (...a: A) => g(f(...a))
}
const fn = pipe2((n: number) => n * 2, (n) => n + 1)
console.log(fn(5)) // 11

त्वरित जाँच

परिवर्ती-तर्क वाले जेनेरिक टपल की अपनी समझ जाँचें।

पुनरावलोकन

परिवर्ती-तर्क वाले टपल प्रकार जेनेरिक को तर्क-सूचियों को टपल के रूप में कैप्चर करने और उन्हें पैरामीटर या रिटर्न स्थानों में स्प्रेड करने देते हैं। इससे टपल संयोजन ([...A, ...B]), तर्कों को आगे भेजना, हेड और टेल को अलग करना तथा आंशिक प्रयोग संभव होते हैं—और सभी तत्वों के सटीक प्रकार सुरक्षित रहते हैं। Parameters<F> जैसे अंतर्निर्मित साधन भी इसी व्यवस्था पर निर्भर करते हैं। इन साधनों का उपयोग तब करें जब फ़ंक्शन के रूप का सटीक प्रकार-निर्धारण अतिरिक्त जटिलता के योग्य हो।

शुरुआत निःशुल्क

एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
101
पाठ
352

अक्सर पूछे जाने वाले प्रश्न

क्या “वैरिएडिक फ़ंक्शन के प्रकार निर्धारित करना” पाठ निःशुल्क है?

हाँ—“वैरिएडिक फ़ंक्शन के प्रकार निर्धारित करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“वैरिएडिक फ़ंक्शन के प्रकार निर्धारित करना” में मैं क्या सीखूँगा?

वैरिएडिक टपल प्रकारों से लचीले API बनाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“वैरिएडिक फ़ंक्शन के प्रकार निर्धारित करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. फ़ंक्शन में रेस्ट पैरामीटर
  2. ऐरे और ऑब्जेक्ट में स्प्रेड
  3. टपल रेस्ट एलिमेंट
  4. वैरिएडिक फ़ंक्शन के प्रकार निर्धारित करना
← TypeScript Academy पर वापस जाएँ