打字稿 - 为扩展接口分配一个基本接口

use*_*529 5 typescript

考虑以下:

interface A {
  x:number;
  y:number
}

interface B extends A { 
  z:number;
}

let v2:B;
// compiler error, as z is not specified
v2 = getSomeA(); // assume this returns interface A
Run Code Online (Sandbox Code Playgroud)

我有一个interface B,那个extends A。我有一个getSomeA()返回interface A. 我的目标是将它分配给v2然后v2.z在通话后添加我自己。显然,这会导致编译器错误。做我打算做的事情的正确方法是什么?(我可以z选择加入,interface B但这是不正确的)

Obl*_*sys 5

您可以为此使用对象传播语法

v2 = { ...getSomeA(), z: 1 };
Run Code Online (Sandbox Code Playgroud)