簡體   English   中英

從可能是 null 和 strictNullChecks 的屬性中鍵入別名

[英]Type alias from property that might be null with strictNullChecks

我正在使用graphql-codegen/typescript-apollo-angular生成 typescript 代碼,可以在我們的 Angular 應用程序中使用。 我們決定啟用strictNullChecks ,唯一的問題是我們使用以下模式來指定 API 返回的內部節點的類型:

type ListSomethingEdge = ListSomethingQuery["something"]["edges"][0];

在我的情況下something是作為Maybe<Array<...>>生成的,這是正確的。 當我啟用strictNullChecks時,上面的代碼不再起作用,因為某些內容可能未定義 / null 也是如此。

Property 'edges' does not exist on type '({ __typename?: "SomethingConnection" | undefined; } & Pick<SomethingConnection, "totalCount"> & { edges?: Maybe<{ __typename?: "SomethingEdge" | undefined; } & { ...; }>[] | null | undefined; pageInfo: { ...; } & Pick<...>; }) | null | undefined'.ts(2339)

我無法找到有關如何從這樣的類型別名中刪除null / undefined類型的文檔。 也許有不同的方法可以做到這一點。

要從類型中刪除null / undefined ,您可以使用NonNullable實用程序。

NonNullable<T>通過排除nullundefinedT構造一個類型

type ListSomethingEdge = NonNullable<ListSomethingQuery["something"]>["edges"][0];

操場


NonNullable實用程序是使用條件類型構建的

type NonNullable<T> = T extends null | undefined ? never : T

** 無需手動定義,typescript 提供,全球通用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM