TypeScript:多重解构和类型断言

时间:2015-07-16 15:09:30

标签: typescript destructuring

我想知道在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;。

类型中缺少

1 个答案:

答案 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');