首页 > 解决方案 > 从接口获取`__typename`

问题描述

我有一个具有属性的ts接口(用于apollo-client@v2 gql查询) 。__typename在现有的代码库中,有很多数据对象的“再水化”,以“魔术字符串”的方式重新添加__typename接口类型。我想知道是否有办法ts通过现有的类型或缓存系统来引用字符串类型或避免这样做。

一个示例(生成的)接口:

export interface SomeNode {
  __typename: "SomeNode";
  id: string;
  name: string;
}

有没有办法将“SomeNode”作为一个值和一个类型?

const newObject: SomeNode = {
  __typename: string(NewNode.__typename) as NewNode.__typename,
  id: 'some value',
  name: 'some name'
}

目前我们这样做:

const newObject: SomeNode = {
  __typename: "NewNode" as "NewNode",
  id: 'some value',
  name: 'some name'
}

这是一个简化的示例,用法确实很奇怪。但我正在寻找一种方法来做这件事。如果没有这个,我们最终会在整个代码库中重新创建已经生成的类型。

标签: typescriptapolloreact-apolloapollo-client

解决方案


推荐阅读