在另一个接口中使用Typescript接口的一个属性
假设我有一个Typescript接口,如下所示在另一个接口中使用Typescript接口的一个属性,typescript,interface,Typescript,Interface,假设我有一个Typescript接口,如下所示 export interface IMyObj { id: string; type: 'AA' | 'AZ' | 'XY'; ... } 现在我需要另一个界面,它也有类型字段 export interface IMyOtherObj { ... type: 'AA' | 'AZ' | 'XY'; ... } 如您所见,我复制了类型的值。所以我的问题是,如何在我的IMyOtherObj接口中重用I
export interface IMyObj {
id: string;
type: 'AA' | 'AZ' | 'XY';
...
}
现在我需要另一个界面,它也有类型
字段
export interface IMyOtherObj {
...
type: 'AA' | 'AZ' | 'XY';
...
}
如您所见,我复制了类型的值。所以我的问题是,如何在我的IMyOtherObj
接口中重用IMyObj.type
?我试过这个
export interface IMyOtherObj {
...
type: IMyObj.type; // -> error
...
}
我想我已经很接近了,但到目前为止运气不好,有什么建议吗?您可以使用扩展功能
所以你会
导出接口IMyObj{
id:字符串;
类型:“AA”|“AZ”|“XY”;
...
}
然后
导出接口IMyOtherObj扩展了IMyObj{
...
其他东西:字符串;
...
}
您可以使用扩展功能
所以你会
导出接口IMyObj{
id:字符串;
类型:“AA”|“AZ”|“XY”;
...
}
然后
导出接口IMyOtherObj扩展了IMyObj{
...
其他东西:字符串;
...
}
您可以创建一个仅包含类型属性定义的新接口,然后从其他接口中扩展:
export interface ITypedObj {
type: 'AA' | 'AZ' | 'XY';
}
export interface IMyObj extends ITypedObj {
id: string;
}
您可以创建一个只包含类型属性定义的新接口,然后从其他接口中扩展:
export interface ITypedObj {
type: 'AA' | 'AZ' | 'XY';
}
export interface IMyObj extends ITypedObj {
id: string;
}
为您的属性定义一个类型,例如
enum MyEnum {
Aa = "AA",
Az = "AZ",
Xy = "XY"
}
像这样使用它
export interface IMyObj {
id: string;
type: MyEnum;
}
为您的属性定义一个类型
,例如
enum MyEnum {
Aa = "AA",
Az = "AZ",
Xy = "XY"
}
像这样使用它
export interface IMyObj {
id: string;
type: MyEnum;
}
你有两个选择
1将字段类型的类型提取为它自己的类型,并在两个位置使用它
type ObjectType='AA'|'AZ'|'XY'
接口A{
类型:ObjectType;
}
接口B{
类型:ObjectType
}
或者,如果无法修改第一个接口,则可以使第二个接口扩展第一个接口的子类型
接口A{
类型:“AA”|“AZ”|“XY”;
}
接口B扩展了拾取{
}
您有两个选项
1将字段类型的类型提取为它自己的类型,并在两个位置使用它
type ObjectType='AA'|'AZ'|'XY'
接口A{
类型:ObjectType;
}
接口B{
类型:ObjectType
}
或者,如果无法修改第一个接口,则可以使第二个接口扩展第一个接口的子类型
接口A{
类型:“AA”|“AZ”|“XY”;
}
接口B扩展了拾取{
}
您的问题是TS类型系统没有
属性访问权限,但请更改类型定义中的一项内容:
type: IMyObj['type']
您的问题是TS类型系统没有
属性访问权限,但请更改类型定义中的一项内容:
type: IMyObj['type']
难道不可能仅仅将它们提取为一个类型吗?难道不可能仅仅将它们提取为一个类型吗?