从接口获取`__typename`

col*_*r-j 6 typescript apollo react-apollo apollo-client

我有一个具有属性的ts接口(用于apollo-client@v2 gql查询)__typename。在现有的代码库中,存在大量数据对象的“补水”,__typename以“魔术字符串”的方式重新添加接口的类型。我想知道是否有一种方法可以通过引用字符串类型,ts或者有一种方法可以避免通过现有类型或缓存系统执行此操作。

一个示例(生成的)界面:

export interface SomeNode {
  __typename: "SomeNode";
  id: string;
  name: string;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将“SomeNode”作为值和类型获取?

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

目前我们这样做:

const newObject: SomeNode = {
  __typename: "NewNode" as "NewNode",
  id: 'some value',
  name: 'some name'
}
Run Code Online (Sandbox Code Playgroud)

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