美文网首页
TypeScript 接口(interface)初探

TypeScript 接口(interface)初探

作者: 酷酷的凯先生 | 来源:发表于2020-10-05 13:06 被阅读0次

# 前言

在面向对象的编程中,接口是一种定义行为和动作的规范。在程序设计里面,接口起到限制和规范的作用,定义了某一批类所需要遵循的规范。
接口不必担心这些类内部状态数据,也不必关心这些类里面方法实现细节,它之规定这批类里必须提供某些方法。接下来让我们具体来看一下,let's go~~~

# 属性类接口

// 定义一个接口 关键字 interface 
// 虽是对象形式,但必须以分号结束
interface FullName{
  firstName: string; 
  secondName: string;
}

function printName(nameObj:FullName): void{
  console.log(nameObj.firstName + '---' + nameObj.secondName)
}

printName('张', '三'); // 报错 没有包含 firstName 与 secondName
printName({firstName:'张', secondName:'三'}); // 正确
printName({secondName:'三', firstName:'张'}); // 正确 参数顺序不用保持一致
// 错误 直接传参只能包含firstName 与 secondName
printName({firstName:'张', secondName:'三', age:18}); 

let obj = {
  firstName:'张', 
  secondName:'三', 
  age:18
}

//正确 定义在外边的对象只要包含 firstName 与 secondName 即可
printName(obj); 

# 可选属性类接口

interface FullInfo{
  firstName: string; 
  secondName: string;
  age?: number; // 加了问号之后即为可选参数,可传可不传
}

function printInfo(infoObj:FullInfo): void{
  infoObj.age
    ? console.log(infoObj.firstName + '-' + infoObj.secondName + '-' + infoObj.age)
    : console.log(infoObj.firstName + '---' + infoObj.secondName)
}

printInfo({firstName:'张', secondName:'三'}); // 正确 age 为可选参数
printInfo({secondName:'三', firstName:'张', age:18}); // 正确 

# 函数类型接口

对函数传入的参数和返回值进行约束(批量约束);

interface encrypt{
  (key: string, value: string): string;
}

// 错误 参数类型与接口不一致
var sha1 = function(key: number, value:string):string{
  reuturn key + '--' + value;
}

// 错误 返回值与接口不一致
var sha2 = function(key: number, value:string):void{
  console.log( key + '--' + value );
}

// 正确
var sha3 = function(key: string, value:string):string{
  reuturn key + '--' + value;
}

sha3('张', '三'); // 张---三

# 类类型接口

类似于抽象类和抽象方法,也可以理解为属性接口和函数接口的组合
关键字是 implements不是继承,是实现 xxx 接口

interface Person{
  name: string;
  work(str: string): void;
}

class Web implements Person{
  name: string;
  constructor(name: string){
    this.name = name;
  }
  work(str: string):void{
    console.log(this.name + '的工作是' + str )
  }
}

let w = new Web('张三');
w.work('开发'); // 张三的工作是开发

# 索引接口

索引接口一般用于约束数组或对象(不经常用)

// 一般用于约束 数组
interface arrITF{
  [index:number]:string; //意思是 索引是number , 值是string
}
let arr1:assITF = [1,2,3]; //错误 索引为number但值不是string
let arr2:assITF = ['1','2','3']; //正确

// 一般用于约束 对象
interface objITF{
  [index:string]:string; //意思是 索引是string, 值是string
}
let obj1:objITF = {name:'张三', age:18}; //错误 索引为string 但值不是string
let obj2:objITF = {name:'张三', age:‘18’}; //正确

// 或者改为以下
interface objITF{
  [index:string]:any; //意思是 索引是string, 值是任意类型
}
let obj1:objITF = {name:'张三', age:18}; //正确
let obj2:objITF = {name:'张三', age:'18'}; //正确

# 接口扩展 -- 接口 继承 接口


interface Animal{
  name:string;
  run():void;
}

interface Person extends Animal{
  work():void;
}

class programmer{
  name:string;
  constructor(name:string){
    this.name = name;
  }
  coding():void{
    console.log(this.name + '在写代码')
  };
}

class Web extends programmer implements Person {
  constructor(nme:string){
    super(name);
  }
  run():void{
    console.log(this.nme + '在跑步');
  }
 work():void{
    console.log(this.nme + '在工作');
  }
}

let w = new Web('张三');
w.run(); // 张三 在跑步
w.work(); // 张三 在写工作
w.coding();// 张三 在写代码

相关文章

  • TypeScript 接口(interface)初探

    # 前言 在面向对象的编程中,接口是一种定义行为和动作的规范。在程序设计里面,接口起到限制和规范的作用,定义了某一...

  • 学习TypeScript 接口

    TypeScript 接口定义 interface interface_name {} 实例 联合类型和接口 接口...

  • TypeScript 中的接口(interface)

    TypeScript 中的接口可分为: 之前的文章 TypeScript 基础类型和接口(interface)里面...

  • TypeScript基础语法 - interface 接口(二)

    TypeScript 中的 interface 接口 Interface接口初步了解 现在我们要作一个简历的自动筛...

  • TypeScript接口(interface)

    介绍 TypeScript的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类...

  • typeScript接口interface

    什么是接口 接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第...

  • typescript 接口interface

    TypeScript的核心原则之一是对值所具有的结构进行类型检查。 可选属性: ? 只读属性: readonly ...

  • TypeScript - 接口

    TypeScript - 接口( Interface) [TOC] 学习目标 理解接口的概念 学会通过接口标注复杂...

  • TS 中 interface,type,enum 的区别

    interface 接口 在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。 在...

  • TS 基础知识(三)

    接口Interface 在 JavaScript 中并没有接口这个概念; TypeScript 的 核心原则之...

网友评论

      本文标题:TypeScript 接口(interface)初探

      本文链接:https://www.haomeiwen.com/subject/zqpnuktx.html