interface ModuleA{
width: number;
height: number;
}
interface ModuleB{
width: number;
offset: number;
}
function test(params: ModuleA | ModuleB): any{
console.log(params.offset);
}
TypeScript 中联合声明,
像这种情况,会抛出错误,大意就是ModuleA
不存在offset
的属性。
请问该如何解决这个问题
你的代码中
params
可以是ModuleA
或者ModuleB
类型。 如果传入一个ModuleA
类型,那么就没有params.offset
这个属性,所以不能通过检查(这也是你使用TypeScript的意义所在),于是报错,毫无疑问。方案1:
可以看看User-Defined Type Guards
方案2
当然你也可以给ModuleA添加一个可选的
offset
属性。