我想知道在 TypeScript 中使用解构时如何断言多个变量的类型。
考虑:
const { OneTypeOfObject, AndAnother } = ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');
我怎么能断言它OneTypeOfObject
有一个类型OneType
并且AndAnother
有一个类型OtherType
?
我可以让它们都 any
像这样:
const { OneTypeOfObject, AndAnother } = <any>ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');
我真正想做的是这样的:
const { <OneType>OneTypeOfObject, <OtherType>AndAnother } = ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');
显然有人想过这样的事情:
https://github.com/Microsoft/TypeScript/commit/7a74d9f8d021f50201765d2170af8d249af90320
但我无法根据我所看到的找到答案......
更新
我尝试了大卫的两种方法,但都没有奏效。这是用于方法 2 的代码:
interface OneType extends ProtoBuf.ProtoBuf {
new(): any;
}
interface OtherType extends ProtoBuf.ProtoBuf {
new(): any;
}
const { <OneType>OneTypeOfObject, <OtherType>AndAnother } = ProtoBuf.loadProtoFile('./ohYesProtobufs.proto').build('iAmANameSpace');
它导致了这个错误:
类型“ProtoBuf”不可分配给类型“{ OneTypeOfObject: OneType; AndAnother:其他类型;}'。“ProtoBuf”类型中缺少属性“OneTypeOfObject”。