2017-02-05 103 views
0

我正在嘗試在Angular 2-Native Script應用程序中創建一個服務,該應用程序定義了一個新聞項目數組,並且具有對相同數據進行操作的多種方法。這些新聞項目可以是不同的類型,例如大,小等,每個參數可能有不同的參數。Angular 2:如何返回屬於在一個數組中擴展超類的多個類的對象?

我已經定義了接口和服務如下。

import { Injectable } from "@angular/core"; 

export interface NewsItem { 
type: "big" | "small" |"referral"; 
title: string; 
text: string; 
imageUrl?: string; 
} 

export interface Referral extends NewsItem { 
type: "referral"; 
username: string; 
} 


@Injectable() 
export class NewsService { 
    private data = [ 
     { type: "big", title: "This is one big item!", text: "Lorem ipsum  dolor sit amet, consectetur adipiscing elit. Phasellus iaculis, turpis vitae ornare accumsan, arcu tortor ultrices nunc, eu aliquam libero sapien vitae tellus.", imageUrl: "https://octodex.github.com/images/octocat-de-los-muertos.jpg" }, 
     { type: "small", title: "Yes, we code!", text: "Vivamus a sem eget erat feugiat hendrerit at quis massa. Nullam varius ac eros non dignissim. Fusce gravida arcu libero.", imageUrl: "https://octodex.github.com/images/baracktocat.jpg" }, 
     { type: "referral", title: "Yes, we code!", username:"Vasanthi Subramaniam", text: "Vivamus a sem eget erat feugiat hendrerit at quis massa. Nullam varius ac eros non dignissim. Fusce gravida arcu libero.", imageUrl: "https://octodex.github.com/images/baracktocat.jpg" } 
    ] 

private getItems(): NewsItem { 
     let result:NewsItem[] = this.data; 

    return result; 
} 
} 

我正在一個錯誤,如下所示:

Type '({ type: string; title: string; text: string; imageUrl: string; } 
| { type: string; title: string...' is not assignable to type 'NewsItem[]' 

我如何定義數組,使得它分配給新聞項?

回答

0

只投你的對象明確爲推薦類:

private data = [ 
    { type: "big", title: "This is one big item!", text: "Lorem ipsum  dolor sit amet, consectetur adipiscing elit. Phasellus iaculis, turpis vitae ornare accumsan, arcu tortor ultrices nunc, eu aliquam libero sapien vitae tellus.", imageUrl: "https://octodex.github.com/images/octocat-de-los-muertos.jpg" }, 
    { type: "small", title: "Yes, we code!", text: "Vivamus a sem eget erat feugiat hendrerit at quis massa. Nullam varius ac eros non dignissim. Fusce gravida arcu libero.", imageUrl: "https://octodex.github.com/images/baracktocat.jpg" }, 
    <Referral>{ type: "referral", title: "Yes, we code!", username:"Vasanthi Subramaniam", text: "Vivamus a sem eget erat feugiat hendrerit at quis massa. Nullam varius ac eros non dignissim. Fusce gravida arcu libero.", imageUrl: "https://octodex.github.com/images/baracktocat.jpg" } 
] 
+0

感謝。按照建議嘗試將對象轉換爲推薦類。仍然收到錯誤如下 類型'(引用| {類型:字符串;標題:字符串;文本:字符串;圖像Url:字符串;})[]'不能分配類型'NewsItem []'。 類型'{type:string; title:string; text:string; imageUrl:string; }'不可分配爲鍵入'NewsItem'。 「類型」屬性的類型不兼容。 類型'字符串'不可分配爲輸入''big'| 「小」| 「推介」| 「interestLink」」。 – Anurag

+0

Thaknks亞歷山大。你的建議奏效了。我之前評論中的錯誤是因爲我沒有正確輸入getItems()。 – Anurag

相關問題