2017-08-07 26 views
0

我使用apollo-codegen從我的項目中嵌入tsx文件的GraphQL查詢生成TypeScript類型。所產生的類型的一個例子是:Typescript:我如何引用一個匿名類型,它是一個命名類型的子類?

export type MooQuery = { 
    wines: { 
    edges: Array< { 
     node: { 
     nodeId: string, 
     wineName: string | null, 
     wineryId: number | null, 
     vintageId: number | null, 
     uomId: number | null 
     }, 
    } | null > | null, 
    } | null, 
}; 

我將經過「節點」,以呈現爲每個節點陣營成分的輔助方法。我想做類似的事情:

renderHelper(node: MooQuery.wines.edges.node) { // this won't work 

} 

有沒有辦法實現我想要的?我想甚至有意義嗎?

回答

1

您可以使用括號標記

renderHelper(node: MooQuery['wines']['edges'][0]['node']) { // this should work 
    //           ^^^ Don't forget the 0 for the array 
} 

雖然你的情況,我只是編輯的類型(您生成它只是一次開始,我希望?)

export type MooQuery = { 
    wines: { 
    edges: Array<{node: MooNode} | null > | null, 
    } | null, 
}; 

export type MooNode = { 
    nodeId: string, 
    wineName: string | null, 
    wineryId: number | null, 
    vintageId: number | null, 
    uomId: number | null 
} 

然後只是MooNode

+0

這看起來不錯,謝謝!但是我得到一個很奇怪的錯誤:錯誤TS2339:屬性'邊緣'在類型'{邊緣:({node:{nodeId:string; wineName:string | null; wineryId:number | null; vintageId:.. '。' - 看起來和我矛盾?! –

+0

我不能重現那個,我建議你打開一個新的問題,並鏈接到這個。 –

+0

請問,謝謝:) –