我有一个像这样的值类型:
export type Value = {
__typename?: 'Value',
key?: Maybe<Scalars['String']>,
label?: Maybe<Scalars['String']>,
value?: Maybe<Scalars['String']>,
};
和类似这样的查询结果类型(生成的apollo钩子):
Maybe<Maybe<{
__typename?: "Value" | undefined;
} & Pick<Value, "key" | "label" | "value">>[]>
我正在尝试将此查询结果传递给函数:
const getValues = (contacts: Value[]) => {
const values = contacts.map(e => e["value"]);
return values;
};
由于某种原因,TypeScript说这些类型不兼容。我的函数调用:
getValues( dataFilters!.caseListFilters!.contacts )
TypeScript错误:
Argument of type 'Maybe<Maybe<{ __typename?: "Value" | undefined; } & Pick<Value, "key" | "label" | "value">>[]>' is not assignable to parameter of type 'Value[]'.
Type 'null' is not assignable to type 'Value[]'.ts(2345)
有人可以帮助我了解这些类型的问题吗?
我知道as Value[]
解决了这个问题,但我不知道为什么。
getValues( dataFilters!.caseListFilters!.contacts as Value[] //no error )
答案 0 :(得分:0)
您有Maybe类型,这些类型可以为更高的空值。因此,尽管您断言它们不是undefined
在使用!
,但您断言它们实际上是Maybe
的东西。 Maybe
类型的事物在其中 时,仍然只有 值。
也许您必须安全地解开值以获得保证值。
Maybe
类型从哪里来? Sanctuary.js? fp-ts?转到“定义”,了解您正在使用的类型,然后阅读文档。您需要从中获得价值。