首页 > 其他分享 >6、接口

6、接口

时间:2023-12-04 20:01:02浏览次数:27  
标签:string 接口 label let interface 属性

接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。接口之定义了方法,但没有实现,具体的实现有继承它的类来完成。

typescript中的接口主要有以下:

  • 属性类接口
  • 函数类型接口
  • 可索引接口
  • 类类型接口

属性类接口

function printLabel(labelledObj: { label: string }) {
  console.log(labelledObj.label);
}

let myObj = { size: 10, label: "Size 10 Object" };
printLabel(myObj);

类型检查器会查看printLabel的调用。printLabel有一个参数,并要求这个对象参数有一个名为label类型为string的属性。

使用属性接口改写上面的例子:

interface LabelledValue {
  label: string;
  width?: number;      //可选属性
}

function printLabel(labelledObj: LabelledValue) {
  console.log(labelledObj.label);
}

//写法一
let myObj = {size: 10, label: "Size 10 Object"};   //这样写只要包含必须要有的属性即可
printLabel(myObj);

//写法二
printLabel({label: "Size 10 Object"});     //这样写对象中的属性必须和接口中的保持一致

直接将对象传给函数和将对象赋值给变量后再传入是不一样:

  • 直接传对象给函数:对象中的属性必须跟接口中的保持一致
  • 将对象赋值给变量后再传入:对象中可以含有不存在接口中的属性

解决上面直接传对象给函数必须和接口中的属性保持一致的问题:添加一个可索引的类型

interface LabelledValue {
  label: string;
  width?: number;      //可选属性
  [propName:string]: any;
}

只读属性

一些对象属性只能在对象刚刚创建的时候修改其值。

interface Point {
    readonly x: number;
    readonly y: number;
}
let p1: Point = { x: 10, y: 20 };
p1.x = 5; // error!

函数类型接口

函数类型接口就是一个只有参数列表和返回值类型的函数定义。参数列表里的每个参数都需要名字和类型。

interface SearchFunc {
  (source: string, subString: string): boolean;
}
let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
  let result = source.search(subString);
  return result > -1;
}
console.log(mySearch("121234234","12")); //true

mySearch方法里的参数名可以不跟接口中的保持一致,但是顺序要一致。

函数可以省去参数类型的定义和返回类型的定义:

mySearch = function(source, subString) {
  let result = source.search(subString);
  return result > -1;
}
console.log(mySearch("121234234","12")); //true

可索引接口

可索引类型具有一个索引签名,它描述了对象索引的类型,还有相应的索引返回值类型。

//对数组的约束
interface StringArray {
  [index: number]: string;
}

let myArray: StringArray = ["Bob", "Fred"];

//对对象的约束
interface obj {
  [index: number]: string;
}

let myArray: obj = {name:'张三'};

类类型接口

对类的约束,跟抽象类有点类似。用法与C#或Java里的接口的基本一样

interface Animal{
    name:string;
    eat(str:string):void;
}
class Dog implements Animal{
    name:string = "";
    constructor(){}
    eat(aName:string){
        console.log(aName + '吃肉');
    }
}
let d = new Dog();
d.eat("小黑");   //小黑吃肉

继承接口

和类一样,接口也可以相互继承。

interface Shape {
    color: string;
}

interface PenStroke {
    penWidth: number;
}

interface Square extends Shape, PenStroke {
    sideLength: number;
}

let square = <Square>{};
square.color = "blue";
square.sideLength = 10;
square.penWidth = 5.0;

标签:string,接口,label,let,interface,属性
From: https://www.cnblogs.com/ewar-k/p/17875768.html

相关文章

  • go接口多态性
    浅谈Golang接口:作用、应用场景及实际应用马哥Linux运维 2023-12-0418:42 发表于江苏引言:    Golang(Go)作为一门现代的静态类型编程语言,提供了许多强大的特性,其中之一便是接口(interface)。接口是Golang中的一个核心概念,它具有广泛的应用场景,可以帮助开发者实现代码的......
  • 其它——接口文档规范
    7.1接口文档规范文章目录7.1接口文档规范HTTP携带信息的方式分离通用信息路径中的参数表达式4数据模型定义请求示例路径与查询字符串参数模型请求体参数模型响应体参数模型异常处理文档提供的形式HTTP携带信息的方式urlheadersbody:包括请求体,响应体分离通用信息......
  • Day15 抽象类与接口
    1.抽象类格式关键字:abstract1.1抽象类:abstractclass类名{}publicabstractclassClassName{inta;publicabstractvoidfun();}除非该继承的子类也是抽象类,否则继承了抽象类的所有类都要重写抽象类的抽象方法不能new一个java抽象类,有点像c++中的......
  • SAP接口出现的问题汇总
    问题:报错信息:o.a.cxf.phase.PhaseInterceptorChainInterceptorfor{http://www.xxxx.com/yyyy/zzzz}ZzzzService#{http://www.xxxx.com/yyyy/zzzz}yy_xxxx_zzz_ttthasthrownexception,unwindingnoworg.apache.cxf.interceptor.Fault:MarshallingError:n......
  • 基于DotNetty实现一个接口自动发布工具 - 通信实现
    基于DotNetty实现通信DotNetty:是微软的Azure团队,使用C#实现的Netty的版本发布。是.NET平台的优秀网络库。项目介绍OpenDeploy.Communication类库项目,是通信相关基础设施层Codec模块实现编码解码Convention模块定义约定,比如抽象的业务Handler,消息载体Ne......
  • Java 函数式接口
    在Java中,函数式接口(functionalinterface)是指仅包含一个抽象方法的接口。这种类型的接口通常用于表示简单的函数签名,并可与lambda表达式或方法引用结合使用,从而提供一种更简洁、更灵活的编程方式。Java8引入了函数式接口的概念,以及一个新的注解@FunctionalInterface。这个注解......
  • 基于DotNetty实现一个接口自动发布工具 - 背景篇
    故事背景小公司,单体项目,接口和页面都在一起,生产和测试环境都是Windows服务器和IIS,本地编译完成,把相关的页面和程序集拷贝到服务器上,尤其是涉及到多个页面,一个个页面找到对应的位置,再到服务器上找到对应的位置拷贝进去,甚至还有备份等操作,不胜其烦,因为历史遗留原因,......
  • charles-造数据,接口返回值固定怎么处理
    问题现象:界面请求第三方接口时,某个字段没有返回正确或者想要修改接口返回值,那么解决的办法是打断点,每次修改接口返回值,但是这样做太麻烦了,测试100次,得改100次。         所以有个简单的办法,只需要将接口返回保存到一个文件中,每次请求都走这个文件,就解决了这个......
  • 京东商品详情接口在电商行业中的重要性及实时数据获取实现
    一、引言随着电子商务的快速发展,商品信息的准确性和实时性对于电商行业的运营至关重要。京东作为中国最大的电商平台之一,其商品详情接口在电商行业中扮演着重要的角色。本文将深入探讨京东商品详情接口的重要性,并介绍如何通过API实现实时数据获取,帮助电商企业提高运营效率和用户体......
  • 统一接口返回结果实体
    REST接口封装统一返回数据工具类如下(记录):publicclassResult{/***响应状态码*/privateIntegercode;/***响应成功与否*/privatebooleansuccess;/***响应消息*/privateStringmsg;/***......