![](/img/trans.png)
[英]TypeScript strictNullChecks - Object is possibly 'null'
[英]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>
通過排除null
和undefined
從T
構造一個類型
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.