在TypeScript中进行类型转换

时间:2017-07-21 23:12:25

标签: typescript apollo-client

我有以下TypeScript代码来创建ApolloClient:

return new ApolloClient({
    dataIdFromObject: (o) => o.uuid
});

编译器给出了以下错误:

  

TS2339:“对象”类型

上不存在属性“uuid”

我试图按如下方式进行类型转换:

interface DomainObject {
    uuid: string
}
...
return new ApolloClient({
    dataIdFromObject: (<DomainObject>o) => o.uuid
});

但是现在编译器变得非常困惑,代码周围有几行,之前很好,开始出错。具体来说,上面的演员表给出了这个错误:

  

TS17008:JSX元素''没有相应的结束标记

显然它认为这是JSX代码。

我该如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:3)

类型断言仅对表达式有效。 o这里是参数声明,而不是表达式(o => o.uuid是lambda)。但您可以为参数提供注释类型:

return new ApolloClient({
    dataIdFromObject: (o: DomainObject) => o.uuid
});