TypeScript中的类型转换
我有以下TypeScript代码来创建Apollo客户端:TypeScript中的类型转换,typescript,apollo-client,Typescript,Apollo Client,我有以下TypeScript代码来创建Apollo客户端: return new ApolloClient({ dataIdFromObject: (o) => o.uuid }); 编译器给了我以下错误: TS2339:类型“Object”上不存在属性“uuid” 我试着按如下方式打字: interface DomainObject { uuid: string } ... return new ApolloClient({ dataIdFromObject:
return new ApolloClient({
dataIdFromObject: (o) => o.uuid
});
编译器给了我以下错误:
TS2339:类型“Object”上不存在属性“uuid”
我试着按如下方式打字:
interface DomainObject {
uuid: string
}
...
return new ApolloClient({
dataIdFromObject: (<DomainObject>o) => o.uuid
});
接口域对象{
uuid:string
}
...
返回新客户端({
dataIdFromObject:(o)=>o.uuid
});
但是现在编译器变得非常混乱,代码周围的几行代码(以前没有问题)开始出现错误。具体而言,上面的强制转换会产生以下错误:
TS17008:JSX元素“”没有相应的结束标记
显然,它认为这是JSX代码
我怎样才能解决这个问题
提前感谢。类型断言仅对表达式有效
o
这里是参数声明,不是表达式(o=>o.uuid
是lambda)。但您可以为参数提供类型注释:
return new ApolloClient({
dataIdFromObject: (o: DomainObject) => o.uuid
});
类型断言仅对表达式有效
o
这里是参数声明,不是表达式(o=>o.uuid
是lambda)。但您可以为参数提供类型注释:
return new ApolloClient({
dataIdFromObject: (o: DomainObject) => o.uuid
});
o
这里是参数声明,不是表达式。请尝试(o:DomainObject)=>o.uuid
@BenjaminHodgson,感谢您的澄清。工作起来很有魅力!如果你能把它作为一个答案,我会把它标记为正确的。o
这里是一个参数声明,而不是一个表达式。请尝试(o:DomainObject)=>o.uuid
@BenjaminHodgson,感谢您的澄清。工作起来很有魅力!如果你能把它作为一个答案,我会认为它是正确的。