type: 类型别名。
// 平常我们会这样来使用它
type MyNumber = number; // 基本类型
type StringOrNumber = string | number; // 联合类型别名
type tuple = [string, number]; // 元组类型
应用场景: 定义基本类型、定义元组类型、定义函数类型、定义联合类型、定义映射类型
interface: 只能用于定义对象类型
应用场景: 需要接口知道合并特性的时候、定义对象类型的时候
type 和 interface 不同点:
① type 类型别名 可以为基本类型、联合类型或元组类型定义别名,接口不可以。
② 同名的接口会自动合并,而类型别名不会(同名接口合并,同名类型别名会冲突)
type 和 interface 共同点:
①都可以用来描述对象或函数
type Line = {
x: number;
y: number;
}
type SetLine = (x:number,y:number) => void;
interface Line {
x: number;
y: number;
}
interface SetLine {
(x: number, y: number): void;
}
②都支持扩展
type Car = {
name: string;
}
type Benz =Car & {
color: string;
}
const benz:Benz = {
name: '梅克塞斯';
color: '暗影骑士黑';
}
interface Car {
name:string;
}
interface Benz extends Car {
color: string;
}
// interface 还可以通过下面方式来扩展
type Car = {
name:string;
}
interface Benz extends Car {
color: string;
}
// type 还可以通过下面方式扩展
interface Car {
name:string;
}
type Benz =Car & {
color: string;
}