【发布时间】:2019-02-17 21:52:03
【问题描述】:
我正在使用 GraphQL 和自动生成的类型来使用 Typescript 进行查询。它倾向于创建很多嵌套的type | null 类型。所以我需要对非空值进行相当长的检查。例如
data &&
data.getCoach &&
data.getCoach.workouts &&
data.getCoach.workouts.items &&
data.getCoach.workouts.items.map((workout) => {/* do something*/});
我尝试使用 lodash has 助手来检查路径是否存在,例如
has('getCoach.workouts.items', data) &&
data.getCoach.workouts.items.map((workout) => {/* do something*/});
但 ts 编译器似乎不理解这一点。
除了让我的 GraphQL 端点始终返回值之外,还有更好的检查方法吗?
【问题讨论】:
-
你试过“npm install @types/lodash”吗? ts 编译器到底在抱怨什么?
-
是的,包括在内。错误是
value is possibly null -
快速查看
lodash/has的类型定义只是接受路径和对象并返回布尔值。这可能不足以让编译器理解它在做什么。 -
如果您使用
(data as any).getCoach.workouts.items.map(…),它会起作用,对吧? -
如果我禁用严格的空检查,它也会起作用。但我想在这里保持类型安全。如果值实际上是
null,则执行(data as any).getCoach.workouts.items.map(…)会在运行时爆炸
标签: reactjs typescript graphql lodash apollo