मैंने यह सवाल देखा है। a> और इसके जैसी अन्य पोस्ट, और यहां तक ​​कि ठीक वही किया जो मैं TS खेल के मैदान में करना चाहता था< / ए>, लेकिन वीएस में मुझे लाल रेखांकन मिलता है और त्रुटियां पैदा होती हैं।

enter image description here enter image description here

त्रुटि txt: Error TS2339 Build:Property 'contains' does not exist on type 'String'.

क्या कोई कॉन्फ़िगरेशन है जो मुझे याद आ रही है?

टिप्पणियों को स्पष्ट करने के लिए संपादित करें:

enter image description here

0
Josh Gust 9 अक्टूबर 2019, 21:05
कृपया कोड और त्रुटियों को टेक्स्ट के रूप में शामिल करें, छवियों के रूप में नहीं।
 – 
Heretic Monkey
9 अक्टूबर 2019, 21:08
 – 
Heretic Monkey
9 अक्टूबर 2019, 21:09
मैंने उन्हें छवियों के रूप में शामिल किया ताकि कोई त्रुटियों के स्थान को देख देख सके। मैं उनका टेक्स्ट विवरण भी जोड़ूंगा। साथ ही ऐसा लगता है कि मेरी अज्ञानता दिखाई दे रही है और इसके लिए includes का उपयोग करना चाहिए, लेकिन फिर भी उत्तर जानना चाहेंगे।
 – 
Josh Gust
9 अक्टूबर 2019, 21:18
स्ट्रिंग पर कोई includes विधि नहीं है।
 – 
Josh Gust
9 अक्टूबर 2019, 21:34
मेरी टिप्पणी में लिंक उस विधि के दस्तावेज़ीकरण को इंगित करता है, और मानकों के लिंक हैं जहां इसे परिभाषित किया गया था। टाइपस्क्रिप्ट अद्यतन प्रकार की परिभाषाओं पर निर्भर करता है; शायद आप टाइपस्क्रिप्ट के पुराने संस्करण का उपयोग कर रहे हैं?
 – 
Heretic Monkey
9 अक्टूबर 2019, 21:38

3 जवाब

यह आपके प्रोजेक्ट tsconfig फ़ाइल पर निर्भर करता है। यह पूर्ण विनिर्देश है - tsconfig। --lib विकल्प पर करीब से नज़र डालें। आम तौर पर विभिन्न ईसीएमएस्क्रिप्ट स्पेक्स से कार्यात्मकता रखने के लिए इसे वहां परिभाषित करने की आवश्यकता होती है।

इसी मुद्दे पर एक नज़र डालें - स्ट्रिंग में शामिल नहीं है। तो ऐसा लगता है कि संकलन के लिए es2016 lib जोड़ा जाना चाहिए (या नई कल्पना):

{
    "compilerOptions": {
          // other options
          "lib": [
            "es2019" // any above or equal es2016
          ]
    },
0
Maciej Sikora 10 अक्टूबर 2019, 00:01

आपकी पहली त्रुटि के संबंध में

TS2339 बिल्ड: संपत्ति 'शामिल है' प्रकार 'स्ट्रिंग' पर मौजूद नहीं है

String इंटरफ़ेस को वैश्विक दायरे में विस्तारित करना सुनिश्चित करें, मॉड्यूल फ़ाइल में नहीं। इसका मतलब है कि फ़ाइल के शीर्ष-स्तर पर कोई export या import नहीं हो सकता है।

interface String {
    foo(): void
}

String.prototype.foo = () => { console.log("bar") }

"aksljflasd".foo()

खेल का मैदान

आप मॉड्यूल फ़ाइल में declare global का भी उपयोग कर सकते हैं:

export {}

declare global {
    interface String {
        foo(): void
    }
}

"aksljflasd".foo()

खेल का मैदान

दूसरी त्रुटि के संबंध में

संपत्ति includes 'स्ट्रिंग' प्रकार पर मौजूद नहीं है

String.prototype.includes के लिए आपको कम से कम ES6 चाहिए। इसलिए संभव है कि आपके पास target ES5 या tsconfig.json में कम। साथ ही, जब आप मैन्युअल रूप से lib विकल्प सेट करते हैं, तो सुनिश्चित करें कि इसमें ES2015.Core शामिल है।

खेल का मैदान

0
ford04 10 अक्टूबर 2019, 00:05

आपके द्वारा पोस्ट किया गया उदाहरण तब तक काम करता है जब तक आप उसमें से एक es6 मॉड्यूल नहीं बना लेते। खेल के मैदान फ़ाइल में कहीं export या import का उपयोग करने का प्रयास करें और त्रुटियों को पॉप अप देखें।

सबसे साफ समाधान इम्हो स्ट्रिंग इंटरफ़ेस घोषणा को *.d.ts फ़ाइल में ले जाना और इसे टाइपस्क्रिप्ट संकलन में शामिल करना है। मैंने फ़ाइल को मनमाने ढंग से /types फ़ोल्डर में डाल दिया और मेरे tsconfig.json में "include": ["types"] का उपयोग किया ताकि इसे उठाया जा सके। फिर आप अपने कोड में वास्तविक एक्सटेंशन String.prototype.contains = ... को अपनी पसंद के अनुसार कहीं भी कर सकते हैं।

0
Skocdopole 10 अक्टूबर 2019, 00:11