मैंने अभी कोणीय 2 के साथ शुरुआत की है और मुझे एक समस्या है जिसे मैं वास्तव में समझ नहीं सकता।संपत्ति '' ऑब्जेक्ट 'प्रकार पर मौजूद नहीं है। अवलोकन योग्य सदस्यता
मैं ऐसे के रूप में बनाया कुछ नकली डेटा है:
export const WORKFLOW_DATA: Object =
{
"testDataArray" : [
{ key: "1", name: "Don Meow", source: "cat1.png" },
{ key: "2", parent: "1", name: "Roquefort", source: "cat2.png" },
{ key: "3", parent: "1", name: "Toulouse", source: "cat3.png" },
{ key: "4", parent: "3", name: "Peppo", source: "cat4.png" },
{ key: "5", parent: "3", name: "Alonzo", source: "cat5.png" },
{ key: "6", parent: "2", name: "Berlioz", source: "cat6.png" }
]
};
जो फिर एक सेवा में आयात किया जाता है और "मनाया"
import { Injectable } from '@angular/core';
import { WORKFLOW_DATA } from './../mock-data/workflow'
import {Observable} from "rxjs";
@Injectable()
export class ApiService {
constructor() { }
getWorkflowForEditor(): Observable<Object>
{
return Observable.of(WORKFLOW_DATA);
}
}
मैं तो एक घटक है जो, निर्माता में:
constructor(private apiService: ApiService)
{
this.apiService.getWorkflowForEditor().subscribe(WORKFLOW_DATA => {
console.log(WORKFLOW_DATA);
console.log(WORKFLOW_DATA.testDataArray);
});
}
पहला console.log ऑब्जेक्ट प्रकार का ऑब्जेक्ट लॉग करता है जिसमें testDataArray प्रॉपर्टी होती है।
दूसरा console.log, संकलन समय पर एक त्रुटि में परिणाम:
Property 'testDataArray' does not exist on type 'Object'.
जबकि अभी भी वस्तुओं की एक सरणी [वस्तु, वस्तु, ..] के रूप में इरादा प्रवेश करने।
मुझे वास्तव में समझ में नहीं आता क्यों, मुझे यकीन है कि मैं कुछ गलत कर रहा हूं, मुझे एक स्पष्टीकरण पसंद आएगा।
किसी भी मदद के लिए धन्यवाद!
आप देखते हैं, अन्य उत्तर किसी भी उपयोग करने का सुझाव कर सकते हैं, मैं व्यक्तिगत रूप से एक अंतरफलक सही तरीका इस्तेमाल कर रहा है की तरह लग रहा है, इस तरह के रूप में कुछ आसान के लिए थोड़ा verbose हालांकि। Angular2 के साथ सबसे अच्छा अभ्यास interfaces हैं? – 0plus1
टाइप सिस्टम आपके लिए मदद करने के लिए है, खासकर जब एप्लिकेशन बढ़ता है। यदि आप नहीं चाहते हैं तो आपको इसका उपयोग करने की आवश्यकता नहीं है - इसका अंतिम जावास्क्रिप्ट पर कोई प्रभाव नहीं पड़ता है। मैं (और मुझे लगता है कि ज्यादातर अन्य) इस तरह एक स्मार्ट संपादक स्वतः पूर्ण प्रदान करता है और आपको गलतियों पर चेतावनी देता है। अगर यह मेरा कोड था, तो शायद मैं रिकॉर्ड्स के लिए एक प्रकार बनाउंगा - '{key: string, parent?: String ..} 'और संग्रह के लिए एक जिसमें रिकॉर्ड प्रकार -' {testDataArray: recordType [] है। .. या ऐसा कुछ। –