将 Maybe<string>[]' 转换为 'string[]

Convert Maybe<string>[]' to 'string[]

我正在将 graphql 与生成的类型一起使用,并努力解决如何将它们转换为我需要将其传递给我的数据服务调用的类型。

@graphql-codegen 给了我一个 args 类型

export type QueryOrdersArgs = {
  ids: Array<Maybe<Scalars['ID']>>;
};

(我真的不明白为什么它生成为 Maybe 类型,因为 graphql 模式强制我只使用 id(字符串)数组的参数进行查询)

在我的解析器中,我需要调用一个接受字符串数组的服务。一切都按预期工作(使用@ts-ignore)但现在我需要修复我的类型。

const { orderIds } = args;
const result = getOrder(orderIds);

我有一个只有这里类型的 codesandbox https://codesandbox.io/s/typescript-playground-export-forked-3fpx9?file=/index.ts

export type Maybe<T> = T | null;
export type Scalars = {
  ID: string;
  String: string;
  Boolean: boolean;
  Int: number;
  Float: number;
  _FieldSet: any;
};

let ids: Array<Maybe<Scalars["ID"]>>;

export const getOrders = (orderIds: Array<string>) => {
  orderIds.map((x) => console.log(x));
};

getOrders(ids);

我目前收到错误 - “TS2345:'Maybe[]' 类型的参数不可分配给 'string[]' 类型的参数。”

非常感谢任何帮助

如果您确信它不应该 是 Maybe 类型,您可以转换它:

type Maybe<T> = T | null;
const maybeArray: Maybe<string>[] = [];
let stringArray: string[] = maybeArray as string[];

或者你的情况

getOrders(ids as string[]);