TypeScript接口

TypeScript接口

接口是我们应用程序中充当“合同”的结构。它定义了类遵循的语法,这意味着实现接口的类必须实现所有成员。我们不能实例化接口,但可以由实现它的类对象引用。TypeScript编译器使用接口进行类型检查(也被称为“鸭子类型”或“结构子类型”),以确定对象是否具有特定的结构。

接口仅包含方法和字段的声明,而不包括实现。我们不能使用它来构建任何东西。它由一个类继承,并且实现接口的类定义了接口的所有成员。

当Typescript编译器将其编译成JavaScript时,接口将从JavaScript文件中消失。因此,它的目的仅在于帮助开发阶段。

接口声明

我们可以声明如下的接口。

interface interface_name {
          // 变量的声明
          // 方法的声明
}
JavaScript

接口是用于声明TypeScript接口的关键字。

interface_name是接口的名称。

接口体包含变量和方法声明。

示例

interface OS {
    name: String;
    language: String;
}
let OperatingSystem = (type: OS): void => {
  console.log('Android ' + type.name + ' has ' + type.language + ' language.');
};
let Oreo = {name: 'O', language: 'Java'}
OperatingSystem(Oreo);
JavaScript

在上面的示例中,我们创建了一个带有字符串类型的名称和语言属性的接口OS。 接下来,我们定义了一个函数,它具有一个参数,即接口OS的类型。

现在,将TS文件编译为JS,其输出如下所示。

let OperatingSystem = (type) => {
    console.log('Android ' + type.name + ' has ' + type.language + ' language.');
};
let Oreo = { name: 'O', language: 'Java' };
OperatingSystem(Oreo);
JavaScript

输出:

TypeScript接口

接口的用途

我们可以使用接口进行以下操作:

  • 验证属性的特定结构
  • 作为参数传递的对象
  • 从函数返回的对象。

接口继承

我们可以从其他接口继承接口。换句话说,Typescript允许接口从零个或多个基类型继承。

基类型可以是类或接口。 我们可以使用“extends”关键字在接口之间实现继承。

下面的示例可以更清楚地理解接口继承。

语法

child_interface extends parent interface{
}
JavaScript

示例

interface Person { 
   name:string
   age:number
}
interface Employee extends Person { 
   gender:string
   empCode:number
}
let empObject = {}; 
empObject.name = "Abhishek"
empObject.age = 25 
empObject.gender = "Male"
empObject.empCode = 43
console.log("Name: "+empObject.name);
console.log("Employee Code: "+empObject.empCode);
JavaScript

输出:

TypeScript接口

让我们以上面的示例为例,这有助于我们更好地理解多个接口继承。

示例

interface Person { 
   name:string  
}
interface PersonDetail { 
    age:number
    gender:string
}
interface Employee extends Person, PersonDetail { 
    empCode:number
}
let empObject = {}; 
empObject.name = "Abhishek"
empObject.age = 25 
empObject.gender = "Male"
empObject.empCode = 43
console.log("Name: "+empObject.name);
console.log("Employee Code: "+empObject.empCode);
JavaScript

输出:

TypeScript接口

数组类型接口

我们也可以使用接口来描述数组类型。以下示例帮助我们了解数组类型接口。

例子

// Array which return string
interface nameArray {
    [index:number]:string
}
// use of the interface
let myNames: nameArray;
myNames = ['Virat', 'Rohit', 'Sachin'];

// Array which return number
interface ageArray {
    [index:number]:number
}
var myAges: ageArray;
myAges =[10, 18, 25];
console.log("My age is: " +myAges[1]);
JavaScript

在上面的例子中,我们声明了返回string类型的nameArray和返回number类型的ageArray。数组中的索引类型始终为number,因此我们可以使用其在数组中的索引位置检索数组元素。

输出:

TypeScript接口

类中的接口

TypeScript还允许我们在类中使用接口。类通过使用implements关键字实现接口。我们可以通过以下示例来了解它。

示例

// 为类定义接口
interface Person {
    firstName: string;
    lastName: string;
    age: number;
    FullName();
    GetAge();
}
// 实现接口
class Employee implements Person {
    firstName: string;
    lastName: string;
    age:number;
    FullName() {
        return this.firstName + ' ' + this.lastName;
    }
    GetAge() {
        return this.age;
    }
    constructor(firstN: string, lastN: string, getAge: number) {
        this.firstName = firstN;
        this.lastName = lastN;
        this.age = getAge;
    }
}
// 使用实现接口的类
let myEmployee = new Employee('Abhishek', 'Mishra', 25);
let fullName = myEmployee.FullName();
let Age = myEmployee.GetAge();
console.log("Name of Person: " +fullName + '\nAge: ' + Age);
JavaScript

在上面的例子中,我们声明了Person接口,并将firstName、lastName作为属性,FullName和GetAge作为方法/函数。这个Employee类使用implements关键字实现了这个接口。在实现一个接口之后,我们必须在类中声明这些属性和方法。如果我们没有实现这些属性和方法,它就会在编译时抛出错误。我们还在类中声明了构造函数。因此,当我们实例化类时,需要传递必要的参数,否则它会在编译时抛出错误。

输出:

TypeScript接口

接口和继承之间的区别

序号 接口 继承
1. 接口是应用程序中充当合同的结构。它定义所需的函数,而类负责实现它以满足该合同。 继承是面向对象编程,允许类似的对象从彼此继承功能和数据。
2. 在接口中,我们只能声明属性和方法。 在继承中,我们可以使用超类声明和定义变量和方法。
3. 接口类型的对象不能声明任何新方法或变量。 在这种情况下,我们可以声明和定义一个子类自己的变量和方法,该子类继承自超类。
4. 接口强制要求存在于对象中的变量和方法。 子类扩展超类的能力以适应“ 定制”需求。
5. 接口是包含无主题结构(抽象或虚拟函数)的类。因此,我们必须派生接口,然后在子类中实现所有函数。 继承是一个过程,在这个过程中,一个子类获得了它的超类的属性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册