TypeScript中的这些语句(接口与类型)之间有什么区别
接口X{
a:号码
b:字符串
}
X型={
a:号码
b:字符串
};
2019年更新
目前的答案和官方文件已经过时。对于那些刚接触TypeScript的人来说,如果没有例子,所使用的术语就不清楚了。以下是最新的差异列表
一,。对象/功能
两者都可用于描述对象的形状或函数签名。但语法不同
接口
接口点{
x:数字;
y:数字;
}
接口设定点{
(x:编号,y:编号):无效;
}
类型别名
类型点={
x:数字;
y:数字;
};
类型设定点=(x:编号,y:编号)=>;无效的
二,。其他类型
与接口不同,类型别名还可用于其他类型,如原语、联合和元组
//原语
类型名称=字符串;
//反对
键入PartialPointX={x:number;};
类型PartialPointY={y:number;};
//联合
类型PartialPoint=PartialPointX | PartialPointY;
//元组
类型数据=[数字,字符串];
三,。延伸
两者都可以扩展,但语法也不同。此外,请注意,接口和类型别名不是互斥的。接口可以扩展类型别名,反之亦然
接口扩展接口
接口部分点{x:number;}
接口点扩展部分点{y:number;}
类型别名扩展了类型别名
键入PartialPointX={x:number;};
类型点=部分点x&;{y:number;};
接口扩展了类型别名
键入PartialPointX={x:number;};
接口点扩展部分点{y:number;}
类型别名扩展接口
接口部分点{x:number;}
类型点=部分点x&;{y:number;};
四,。工具
类可以以完全相同的方式实现接口或类型别名。但是请注意,类和接口被视为静态蓝图。因此,它们无法实现/扩展命名联合类型的类型别名
接口点{
x:数字;
y:数字;
}
类SomePoint实现点{
x=1;
y=2;
}
类型点2={
x:数字;
y:数字;
};
类SomePoint2实现了Point2{
x=1;
y=2;
}
键入PartialPoint={x:number;}{y:number;};
//FIXME:无法实现联合类型
类SomePartialPoint实现PartialPoint{
x=1;
y=2;
}
五,。声明合并
与类型别名不同,接口可以多次定义,并将被视为单个接口(合并所有声明的成员)
//这两个声明变成:
//接口点{x:number;y:number;}
接口点{x:number;}
接口点{y:number;}
常数点:点={x:1,y:2};