2016-05-29 74 views
-3

我不能transpile以下類:打字稿類失敗

class DataService { 
    styles: Object[]; 
    selectedStyle: Object; 
    selectedChildStyle: Object; 

    constructor() { 
     this.styles = [{ 
      "name": "Parent", 
      "child": {} 
     }]; 

     this.selectedStyle = this.styles[0]; 

     // THE BELOW LINES CREATE PROBLEM 
     if (this.selectedStyle.child && this.selectedStyle.child.length) 
      this.selectedChildStyle = this.selectedStyle.child[0]; 
     else 
      this.selectedChildStyle = null; 
    } 
} 

,這並不讓我NPM啓動應用程序。如果我保留最後四行未註釋,它會給代碼ELIFECYCLE一個奇怪的錯誤。

請幫忙!

+0

你能至少告訴你在說什麼錯誤訊息。 – JJJ

+0

這個 – Lakshay

+0

沒有得到任何適當的錯誤那麼你怎麼知道它失敗? – JJJ

回答

1

Define selectedStyle as any;

selectedStyle: any; // This is the change 

class DataService { 
    styles: Object[]; 
    selectedStyle: any; // This is the change 
    selectedChildStyle: Object; 

    constructor() { 
     this.styles = [{ 
      "name": "Parent", 
      "child": {} 
     }]; 

     this.selectedStyle = this.styles[0]; 

     if (this.selectedStyle.child && this.selectedStyle.child.length) 
      this.selectedChildStyle = this.selectedStyle.child[0]; 
     else 
      this.selectedChildStyle = null; 
    } 
} 
+0

看起來不錯!什麼是任何btw? – Lakshay

+0

@Lakshay任何意味着定義的對象作爲一個動態的,我認爲你應該閱讀一些文章,並觀看有關TypeScript –

+0

一些視頻感謝Dor..yes我shd :) ..請分享鏈接,如果你有一個..再次感謝 – Lakshay

2

那是因爲你使用Objectthis.selectedStyle類型,並Object沒有一個名爲child場。

如果你希望編譯器瞭解的類型,那麼你需要定義的,是這樣的:

interface Style { 
    name: string; 
    child: Style[]; 
} 

class DataService { 
    styles: Style[]; 
    selectedStyle: Style; 
    selectedChildStyle: Style; 

    constructor() { 
     this.styles = [{ 
      "name": "Parent", 
      "child": [<Style> {}] 
     }]; 

     this.selectedStyle = this.styles[0]; 

     // THE BELOW LINES CREATE PROBLEM 
     if (this.selectedStyle.child && this.selectedStyle.child.length) 
      this.selectedChildStyle = this.selectedStyle.child[0]; 
     else 
      this.selectedChildStyle = null; 
    } 
}