接口是命名数据结构(例如对象)的另一种方式;与type 不同,interface仅限于描述对象类型。 接口的声明语法也不同于类型别名的声明语法。 让我们将上面的类型别名 Person 重写为接口声明: interface Person { id: userId; name: userName; age: number; gender: string; isWebDev: boolean; } 1. 2. 3. 4. ...
// 实现UserInterface接口classUserimplementsUserInterface{id:number;name:string;email:string;constructor(id:number,name:string,email:string){this.id=id;this.name=name;this.email=email;}getUsername():string{returnthis.name;}}// 实现AdminInterface接口classAdminimplementsAdminInterface{id:number;name:strin...
在这个示例中,Point和PointInterface分别使用type和interface定义了相同的对象类型。AddFunction和SubtractFunction分别使用type和interface定义了相同的函数类型。Person和PersonInterface使用type和interface定义了相同的对象类型,但在Student和StudentType的定义中,Student使用interface继承了PersonInterface,而StudentType使用type则无法...
类型别名可以继承接口,反之亦然。只是在实现形式上,稍微有些差别。 interface 继承 interface interfacePerson{ name:string } interfaceStudentextendsPerson { stuNo:number} interface 继承 type typePerson{ name:string } interfaceStudentextendsPerson { stuNo:number} type 继承 type typePerson{ name:string } t...
另一个值得注意的是,接口和类型别名并不互斥。类型别名可以继承接口,反之亦然。只是在实现形式上,稍微有些差别。interface 继承 interfaceinterface Person{ name:string } interface Student extends Person { stuNo: number }interface 继承 typetype Person{ name:string } interface Student extends Person { stuNo...
// interface 继承 type type Person { name: string } interface Student extends Person { stuId: number } 小结:对于 interface 来说,继承是通过 extends 实现的;而 type 是通过 & 来实现的,也可以叫做交叉类型。 三、不同之处 1、type 可以做到而 interface 不能做到 ...
当我们使用 TypeScript 时,就会用到 interface 和 type,平时感觉他们用法好像是一样的,没啥区别,都能很好的使用,所以也很少去真正的理解它们之间到底有啥区别。我们开发过经常或这么来定义类型:
在这个例子中,interface和type都可以定义一个对象类型,并且在使用上几乎没有区别。 2. 扩展(Extend) 2.1interface的扩展 interface可以通过继承的方式进行扩展: interface User { name: string; age: number; } interface Admin extends User { role: string; ...
interface Foo { id: string; } interface Bar extends Foo { id: number; // 报错 } 多重继承时,如果多个父接口存在同名属性,那么这些同名属性不能有类型冲突,否则会报错。 2. interface继承type 可以继承type命令定义的对象类型,如果其他类型则无法继承。 type Country = { name: string; capital: string;...