TypeScript 接口

TypeScript 接口

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

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

当TypeScript编译器将其编译为JavaScript时,接口将从JavaScript文件中消失。因此,它的目的只在开发阶段有帮助。

接口声明

我们可以如下声明一个接口。

interface interface_name {
          // variables' declaration
          // methods' declaration
}
  • 一个 接口 是用来声明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);

在上面的示例中,我们创建了一个具有名称和字符串类型的属性名称和语言的OS接口。接下来,我们定义了一个函数,该函数有一个参数,该参数是OS接口的类型。 现在,将TS文件编译为JS,其输出如下。

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

输出:

TypeScript 接口

接口的使用

我们可以将接口用于以下几个方面:

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

接口继承

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

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

以下示例可以帮助我们更清楚地理解接口的继承。

语法

child_interface extends parent interface{
}

示例

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);

输出:

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);

输出:

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]);

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

输出:

TypeScript 接口

类中的接口

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

示例

// defining interface for class
interface Person {
    firstName: string;
    lastName: string;
    age: number;
    FullName();
    GetAge();
}
// implementing the interface
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;
    }
}
// using the class that implements interface
let myEmployee = new Employee('Abhishek', 'Mishra', 25);
let fullName = myEmployee.FullName();
let Age = myEmployee.GetAge();
console.log("Name of Person: " +fullName + '\nAge: ' + Age);

在上面的示例中,我们声明了一个接口 Person ,它有两个属性 firstNamelastName ,以及两个方法 FullNameGetAge 。类 Employee 通过使用 implements 关键字来实现该接口。在实现接口后,我们必须在类中声明这些属性和方法。如果我们不实现这些属性和方法,将会抛出一个编译时错误。我们还在类中声明了一个构造函数。因此,当实例化该类时,我们需要传递必要的参数,否则将在编译时抛出错误。

输出:

TypeScript 接口

接口与继承的区别

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程