【发布时间】:2020-06-07 10:04:15
【问题描述】:
这是一个奇怪的问题,但我正在处理一个包含大约 100 个输入字段的大型表单。我们将所有这些数据传递到 GraphQL 端点。我们使用的是 TypeScript,我已经根据模式定义了接口。
我想知道我是否可以使用 TypeScript 的接口类型,特别是布尔类型,将某些属性值自动转换为 true 或 false,因为它们从表单中以字符串 "1" 或 @987654324 的形式到达@ 或 "true"(复选框)?然后,我可以构建一些过滤器/转换器,当我可以从接口检测到某些输入类型时,自动转换 GraphQL 请求的某些输入类型。在 StackOverflow 上有人建议做这样的事情:
interface I1 {
x: boolean;
}
let myVar: I1['x'];
但您不能使用定义的myVar。我想得到typeof I1.x,这样我就可以取回'boolean',然后对!!(obj.x)等一些字段进行转换。
那么我可以这样做还是真的必须生成一个巨大的对象树转换或定义特定的键,再次(重复),成为布尔值?还是我们必须考虑在 GraphQ 中使用布尔值?
【问题讨论】:
-
对此的一种解决方案是从复选框中实际传递“true”,然后使用类型安全比较对其进行检查,然后将其自动转换为布尔值。假值不会被传递,而是被忽略。
-
使用接口是不可能的,因为当 Typescript 编译成 Javascript 时,接口会被完全擦除;它们在运行时无效。
-
是的,我是这么认为的。谢谢!
标签: typescript graphql