我想知道在TypeScript中使用解构时如何断言多个变量的类型。
考虑:
const { OneTypeOfObject, AndAnother } = ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');
如何断言OneTypeOfObject
的{{1}}类型和OneType
的类型为AndAnother
?
我可以像这样所有 OtherType
:
any
我真正喜欢做的事情是这样的:
const { OneTypeOfObject, AndAnother } = <any>ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');
显然已经考虑过这种事情:
https://github.com/Microsoft/TypeScript/commit/7a74d9f8d021f50201765d2170af8d249af90320
但我找不到基于我所见过的答案......
我尝试了David的两种方法,但都没有奏效。这是用于方法2的代码:
const { <OneType>OneTypeOfObject, <OtherType>AndAnother } = ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');
它导致了这个错误:
Type&#39; ProtoBuf&#39;不能赋予类型&#39; {OneTypeOfObject:OneType; AndAnother:OtherType; }&#39 ;.属性&#39; OneTypeOfObject&#39;在ProtoBuf&#39;。
类型中缺少
答案 0 :(得分:1)
一开始,使用类型进行打算也让我感到困惑。有办法可以做到这一点。
最简单的ProtoBuf.loadProtoFile('./ohYesProtobufs.proto')
返回适当的类型(我意识到这并不总是可行或容易)。
OR
const { OneTypeOfObject, AndAnother } = <{ OneTypeOfObject: TypeA; AndAnother : TypeB }> ProtoBuf.loadProtoFile('./ohYesProtobufs.proto');
OR
const { OneTypeOfObject, AndAnother } : { OneTypeOfObject: TypeA; AndAnother : TypeB } = ProtoBuf.loadProtoFile('./ohYesProtobufs.proto');