在TypeScript

时间:2018-08-29 19:11:57

标签: typescript interface spread-syntax

我试图使用rest运算符从Object中删除属性,但无法弄清楚如何在新Object上强制类型。

interface Ab {
  a: string;
  b: number;
}

interface Bc {
  b: number;
  c: boolean | undefined;
}

const ab: Ab = { a: 'a', b: 1};
const {a, ...bc} = {...ab, c: true};

我知道BC现在有一个类型

{
  b: number;
  c: boolean;
}

是否有一种方法可以强制bc显式为Bc类型?

1 个答案:

答案 0 :(得分:0)

实际上,这是一个非常有趣和棘手的问题:) 所以这是我的解决方案:

interface Abc extends Ab, Bc {
  bc: Bc;
}

const ab: Ab = { a: 'a', b: 1};
const { a, ...bc }: Abc = { ...ab, c: true } as Abc;

Playground link