tsc · बिल्ड और टाइप
संदेश
error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
इसका मतलब
function जो type स्वीकार करता है और आपने जो type दिया, वे भिन्न हैं, और संदेश उन्हें क्रम से बताता है — पहले आपका दिया हुआ, फिर अपेक्षित। सबसे आम मामला यह है कि form के किसी field, URL की query string, या JSON से आया मान string के रूप में वहाँ पहुँचता है जहाँ संख्या अपेक्षित है। सीमा पर एक बार रूपांतरण करना उत्तर है, पर Number(value) विफल होने पर अपवाद नहीं, NaN लौटाता है, इसलिए उस NaN को आगे बहने से रोकना पड़ता है — Number.isFinite(n) वहीं की जाँच है।
सुधार
इसका एक-लाइन कमांड नहीं है। व्याख्या में लिखा है कि क्या देखना है।
- कौन देता है
- tsc
- बिल्ड और टाइप
- 10
build की त्रुटियाँ किसी औज़ार का चलने से पहले मना कर देना हैं, इसलिए प्रकट होते समय वे कुछ तोड़ती नहीं — पर वे दो सवाल पूछती हैं: क्या आप type या रास्ता असली रूप के अनुसार सुधारेंगे, या as any अथवा दमन-टिप्पणी से उस एक पंक्ति को पार करा देंगे — और यहीं पहली बार वे चीज़ें सामने आती हैं जो केवल आपकी मशीन पर सही हैं: अक्षरों के बड़े-छोटे रूप, extension, और environment variables।
एरर संदेश कैसे पढ़ें
- पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
- फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
- संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
- वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
- कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।
अक्सर पूछे जाने वाले सवाल
Q. “error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.” का क्या मतलब है?
function जो type स्वीकार करता है और आपने जो type दिया, वे भिन्न हैं, और संदेश उन्हें क्रम से बताता है — पहले आपका दिया हुआ, फिर अपेक्षित। सबसे आम मामला यह है कि form के किसी field, URL की query string, या JSON से आया मान string के रूप में वहाँ पहुँचता है जहाँ संख्या अपेक्षित है। सीमा पर एक बार रूपांतरण करना उत्तर है, पर Number(value) विफल होने पर अपवाद नहीं, NaN लौटाता है, इसलिए उस NaN को आगे बहने से रोकना पड़ता है — Number.isFinite(n) वहीं की जाँच है।
Q. इसे कैसे ठीक करें?
एक-लाइन कमांड नहीं है। ऊपर की व्याख्या में लिखा है कि क्या देखना है।
Q. यह कौन-सा औज़ार देता है?
tsc। यह बिल्ड और टाइप में आता है, और संदेश 14 शब्दों का है।