在Typescript中的类型中扩展接口 接口类型{ 名称:字符串; 标签:字符串; 选中?:布尔值; 禁用?:布尔值; } 接口类别{ 名称:字符串; 标签:字符串; 描述:字符串; } 类型数据=数组;

在Typescript中的类型中扩展接口 接口类型{ 名称:字符串; 标签:字符串; 选中?:布尔值; 禁用?:布尔值; } 接口类别{ 名称:字符串; 标签:字符串; 描述:字符串; } 类型数据=数组;,typescript,Typescript,我有上面的类型描述。如果您看到接口类别具有与类型数据中相同的三个键。如何在我的类型数据中引用接口类别,而不进行上述复制。请注意,我的类型数据中不需要额外的密钥 谢谢最小的改动是使用: 类型数据=数组; …但我建议遵循并为该数组的内容创建一个类型 我可能也会避免使用数据类型,但这是风格的问题。如果您对内容使用类型,您可以在当前使用数据的位置使用ThatType[],为数组的内容引入一个命名接口,它扩展了类别: type Data = Array<Category & { // −

我有上面的类型描述。如果您看到
接口类别
具有与
类型数据
中相同的三个键。如何在我的
类型数据
中引用
接口类别
,而不进行上述复制。请注意,我的
类型数据中不需要额外的密钥


谢谢

最小的改动是使用:

类型数据=数组;

…但我建议遵循并为该数组的内容创建一个类型


我可能也会避免使用
数据类型,但这是风格的问题。如果您对内容使用类型,您可以在当前使用数据的位置使用
ThatType[]
,为数组的内容引入一个命名接口,它扩展了类别:

type Data = Array<Category & {
// −−−−−−−−−−−−−−−^^^^^^^^^^
    types: IType[];
}>;
接口类型{
名称:字符串;
标签:字符串;
选中?:布尔值;
禁用?:布尔值;
}
接口类别{
名称:字符串;
标签:字符串;
描述:字符串;
}
接口数据项扩展了类别{
类型:IType[];
}
类型数据=数组;

我想问你是否更喜欢你的解决方案而不是我的。除了简单之外,你/我的建议有什么优点或缺点吗?@JBNizet-我不是TS专家,但对我来说,你的解决方案更好,因为这意味着OP可以只使用
DataItem[]
,甚至不用麻烦使用
数据类型(除非他们出于风格原因而喜欢它)。我相信他们都有自己的位置,但如果没有更多的信息,我会选择你的方式。:-)非常感谢@T.J.我也不是TS专家。比起JavaScript,我更喜欢它,但它的类型系统比我用过的任何东西都要复杂得多。我只是想用
type
,让它看起来很花哨。感谢这两种解决方案都能起作用。这是肯定的,不仅仅是因为它使得
数据
基本上不必要;OP可以只使用
DataItem[]
type Data = Array<Category & {
// −−−−−−−−−−−−−−−^^^^^^^^^^
    types: IType[];
}>;
interface IType {
    name: string;
    label: string;
    checked?: boolean;
    disabled?: boolean;
}
interface Category {
    name: string;
    label: string;
    description: string;
}

interface DataItem extends Category {
    types: IType[];
}

type Data = Array<DataItem>;