2017-09-27 9 views
0

のための有効なtypescriptです値に応答を変換できません:は、私はこれらのインタフェースを説明strore

enum ProductType {current, closed, coming} 

export interface CurrentProductForCarousel { 
type_product:ProductType.current; 
offers: ProductMainInfo[] 
} 

export interface ProductMainInfo { 
    id: number; 
    disclaimer: string; 
    company?: { 
    registeredOfficeState?: string; 
    }; 
    date: { 
    timestamp: number; 
    days: number; 
    hours: number; 
    }; 
} 

私はngrx-店舗を持っています。私の減速は

{"success":true, "type_prudct":"current","products":[{"id":34, "disclaimer": "text", "company":{"registeredOfficeSuburb":"West Perth"}, "date":{"timestamp":1567987198,"days":710,"hours":"14"}}]} 

質問は、私がストアからデータを取得するよりも、保存して私のインターフェイスの正しいタイプと応答データを設定することができる方法である応答の

export interface State { 
currentProductForCarousel: CurrentProductForCarousel | null; 
} 

export const initialState: State = { 
сurrentProductForCarousel: null, 
}; 

export function reducer(state = initialState, action: 
pruduct.Actions): State { 
switch (action.type) { 
    case pruductActions.FETCH_PRODUCTS_CURRENT_SUCCESS: { 
    return { 
     ...state, 
    currentProductsForCarousel: action.payload, 
    }; 
    } 

例のように見えますか?

答えて

0

応答の型が列であるため、列挙型と一致しません。あなたは以下のように表現することができます:

type ProductType = 'current' | 'closed' | 'coming'; 

interface Company { 
    registeredOfficeSuburb: string; 
} 

interface ProductDate { 
    timestamp: number; 
    days: number; 
    hours: string; 
} 

interface Product { 
    id: number; 
    disclaimer: string; 
    company: Company; 
    date: ProductDate; 
} 

interface ProductResponse { 
    success: boolean; 
    type_prudct: ProductType, 
    products:Product[] 
} 

var r: ProductResponse = { 
    "success": true, 
    "type_prudct": "current", 
    "products": [ 
     { 
      "id": 34, 
      "disclaimer": "text", 
      "company": { "registeredOfficeSuburb": "West Perth" }, 
      "date": { "timestamp": 1567987198, "days": 710, "hours": "14" } 
     }] 
}; 
関連する問題