2016-01-12 10 views
26

प्रकार के पैरामीटर के लिए असाइन करने योग्य नहीं है। मैं VSCode का उपयोग कर स्क्रिप्ट टाइप करने के लिए नया हूं।प्रकार 'एक्स' का तर्क 'एक्स'

हो रही निम्न त्रुटियों:

  1. त्रुटि TS2322: प्रकार '() => स्ट्रिंग' टाइप करने के लिए 'स्ट्रिंग' आबंटित नहीं है।

  2. त्रुटि TS2322: प्रकार '() => संख्या' 'संख्या' टाइप करने के लिए आबंटित नहीं है।

कोड:

DTO.ts

interface DTO { 

    getId(): number; 
    getValue(): string; 
} 
export = DTO; 

LinkedObject.ts

class LinkedObject { 

    public value: string = "Not Set"; 
    public id: number = 0; 

    constructor(value?: string, id?: number) { 
     this.value = value; 
     this.id = id; 
    } 
} 
export = LinkedObject; 

मैं का दृष्टांत को 01 कोशिश कर रहा हूँवर्ग उल्लेख इंटरफ़ेस तरीकों से ऊपर का उपयोग कर:

TravelClientFormPopulator.ts

class TravelClientFormPopulator { 

    public populateComboBoxUsingDTOs(dataObjects: Array<DTO>, comboBoxID: string): void { 

     // Get the combo box 
     var selectElement = <HTMLSelectElement> document.getElementById(comboBoxID); 
     // Reset the options 
     selectElement.options.length = 0; 

     var linkedObjectsToAdd: LinkedObject[] = new Array<LinkedObject>(); 

     var defaultLinkedObject: LinkedObject = new LinkedObject("Not Selected", 0); 

     linkedObjectsToAdd.push(defaultLinkedObject); 

     for (var i = 0; i < dataObjects.length; i++) { 
      var value: string = dataObjects[i].getValue; // Error here 
      var id: number = dataObjects[i].getId; // And here 
      var linkedObject: LinkedObject = new LinkedObject(value, id); 
     } 
    } 
} 

किसी भी मदद अत्यधिक सराहना की जाएगी।

उत्तर

31

आप याद आती है कोष्टक:

var value: string = dataObjects[i].getValue(); 
var id: number = dataObjects[i].getId(); 
+8

यह समझना उपयोगी है कि भविष्य में भी आपकी मदद करने के लिए त्रुटि क्या कह रही है। 'टाइप'() => स्ट्रिंग 'टाइपिंग' टाइप करने के लिए असाइन करने योग्य नहीं है। 'मूल रूप से इस उदाहरण में कह रहा है "एक स्ट्रिंग जो एक स्ट्रिंग देता है वह टाइप स्ट्रिंग के चर के लिए असाइन करने योग्य नहीं है" एक बार जब आप पढ़ते हैं() => स्ट्रिंग 'सही ढंग से यह सब समझ में होना चाहिए। यदि यह शुद्ध जेएस था तो आपको कोई त्रुटि नहीं मिली होगी और आपका वैरिएबल वापस किए गए मान के बजाए फ़ंक्शन पर इंगित कर रहा होगा और यह पता चलाना मुश्किल होगा कि क्या हो रहा है। – DeezCashews

3

इसके अलावा अन्य परिदृश्य जोड़ने जहां आप इन त्रुटियों

  1. सबसे पहले आप की जाँच संकलक संस्करण देख सकते हैं, डाउनलोड नवीनतम टाइपप्रति संकलक समर्थन करने के लिए ES6 वाक्यविन्यास

  2. टाइपप्रति अभी भी, यहां तक ​​कि टाइपिंग त्रुटियों इस वास्तव में विकास बाधित नहीं करता साथ उत्पादन का उत्पादन

जब आप देखते हैं इन त्रुटियों को प्रारंभ में वाक्यविन्यास के लिए जाँच करें या जब इन तरीकों या चर कॉलिंग,
चेक कि क्या कार्यों के मापदंडों गलत डेटा प्रकार के हैं, आप 'स्ट्रिंग' और एक 'बूलियन' या 'संख्या' बताए

उदाहरण

लिए

के रूप में प्रारंभ 1.

private errors: string; 
    //somewhere in code you assign a boolean value to (string)'errors' 
    this.errors=true 
    or 
    this.error=5 

2।

private values: Array<number>;  
    this.values.push(value); //Argument of type 'X' is not assignable to parameter of type 'X' 

त्रुटि संदेश यहाँ है क्योंकि सरणी प्रारंभ के लिए वर्गाकार कोष्ठक याद आ रही है, यह इसके बिना भी काम करता है, लेकिन वी.एस. कोड रेड अलर्ट।

private values: Array<number> = [];  
this.values.push(value); 

नोट:
जो नियत मूल्य के अनुसार जावास्क्रिप्ट typecasts याद रखें, तो टाइपप्रति उन्हें सूचित करता है लेकिन कोड निष्पादित करता है यहां तक ​​कि के साथ इन त्रुटियों वी.एस. कोड में प्रकाश डाला

पूर्व:

var a=2; 
typeof(a) // "number" 
var a='Ignatius'; 
typeof(a) // "string" 
2

इसके लायक होने के लिए, अगर किसी को यह समस्या केवल VSCode में है, तो बस VSCode को पुनरारंभ करें और इसे ठीक करना चाहिए। कभी-कभी, Intellisense आयात या प्रकार के साथ गड़बड़ लग रहा है।

संबंधित Typescript: Argument of type 'RegExpMatchArray' is not assignable to parameter of type 'string'

0

करने के लिए मेरे मामले में, अजीब पर्याप्त, मैं कक्षा इसके बारे में शिकायत करते हुए के आयात याद आ रही थी और मेरे आईडीई यह पता नहीं चला।

1

मैं कर रहा हूँ कोणीय 2 और टाइपप्रति और मैं मैं अपने तीर अंकन में एक जगह थी

मैं .map(key = > बजाय .map(key =>

निश्चित रूप से अपनी आँखें बेवकूफ वाक्यविन्यास त्रुटियों के लिए खुला रखने के लिए किया था नहीं पता था

संबंधित मुद्दे