类型和带有“键”属性的对象

时间:2020-07-07 13:07:33

标签: typescript

我有以下源代码,我认为以下语法的目的是/可能是

type CatalogCategoryWithKey = CatalogCategory & { key: string };

任何人都可以链接一些信息,程序员什么时候以及为什么需要这种语法?

2 个答案:

答案 0 :(得分:4)

程序员显然需要一种具有CatalogCategory所有功能的类型,以及具有key类型的附加属性string。在TypeScript中,它称为https://github.com/google/ExoPlayer/issues/2438

这是一个稍作设计的例子:

interface CatalogCategory {
   id: number;
   name: string;
}

type CatalogCategoryWithKey = CatalogCategory & { key: string };

function example(param: CatalogCategoryWithKey) {
   const { id, name, key } = param;
   console.log(`${id}, ${name}, ${key}`);
}

const cat: CatalogCategory = { id: 42, name: "Answer" };

example({ ...cat, key: "something" });

intersection type

答案 1 :(得分:0)

此表达式将2种类型“合并”为一种。在类型上使用时,&运算符的行为或多或少像+对字符串的行为。

它叫intersection type

或者,也可以使用一个新的界面,只是更加冗长:

interface CatalogCategoryWithKey extends CatalogCategory {
    key: string;
}