TypeScript 中的类型转换
Typecasting in TypeScript
我有以下 TypeScript 代码来创建 ApolloClient:
return new ApolloClient({
dataIdFromObject: (o) => o.uuid
});
编译器给我以下错误:
TS2339:Property 'uuid' does not exist on type 'Object'
我试着按如下方式进行类型转换:
interface DomainObject {
uuid: string
}
...
return new ApolloClient({
dataIdFromObject: (<DomainObject>o) => o.uuid
});
但现在编译器变得非常混乱,代码周围的几行代码开始出错,之前这些行都很好。具体来说,上面的转换给出了这个错误:
TS17008:JSX element '' has no corresponding closing tag
显然它认为这是 JSX 代码。
我该如何解决这个问题?
提前致谢。
类型断言仅对表达式有效。 o
这里是参数声明,不是表达式(o => o.uuid
是一个 lambda)。但是你可以给一个参数一个类型 annotation:
return new ApolloClient({
dataIdFromObject: (o: DomainObject) => o.uuid
});
我有以下 TypeScript 代码来创建 ApolloClient:
return new ApolloClient({
dataIdFromObject: (o) => o.uuid
});
编译器给我以下错误:
TS2339:Property 'uuid' does not exist on type 'Object'
我试着按如下方式进行类型转换:
interface DomainObject {
uuid: string
}
...
return new ApolloClient({
dataIdFromObject: (<DomainObject>o) => o.uuid
});
但现在编译器变得非常混乱,代码周围的几行代码开始出错,之前这些行都很好。具体来说,上面的转换给出了这个错误:
TS17008:JSX element '' has no corresponding closing tag
显然它认为这是 JSX 代码。
我该如何解决这个问题?
提前致谢。
类型断言仅对表达式有效。 o
这里是参数声明,不是表达式(o => o.uuid
是一个 lambda)。但是你可以给一个参数一个类型 annotation:
return new ApolloClient({
dataIdFromObject: (o: DomainObject) => o.uuid
});