TypeScript入门-接口

发布时间 - 2026-01-11 00:26:06    点击率:

大致介绍

在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。

接口

例子:

  function printLabel(labelledObj: { label: string }) {
   console.log(labelledObj.label);
  }
  let myObj = { size: 10, label: "Size 10 Object" };
  printLabel(myObj);

printLabel函数有一个参数,要求这个参数是个对象,并且有一个属性名为label的类型为string的属性

有时我们会传入多个参数,但是只检测指定的参数有没有

用接口来实现上面的例子:

interface LabelledValue {
   label: string;
  }
  function printLabel(labelledObj: LabelledValue) {
   console.log(labelledObj.label);
  }
  let myObj = {size: 10, label: "Size 10 Object"};
  printLabel(myObj);

注意:要用到关键字 interface

可选属性

有时接口里的属性不是必须的是可选的,那么只要加个?就可以了

interface SquareConfig {
   color?: string;
   width?: number;
  }
  function createSquare(config: SquareConfig): {color: string; area: number} {
   let newSquare = {color: "white", area: 100};
   if (config.color) {
    newSquare.color = config.color;
   }
   if (config.width) {
    newSquare.area = config.width * config.width;
   }
   return newSquare;
  }
  let mySquare = createSquare({color: "black"});

上面的代码中 config:SquareConfig规定了函数参数, {color: string;area: numner}规定了函数返回值的类型

使用可选属性的好处:

1、可以对可能存在的属性进行定义

2、可以捕获访问不存在的属性时的错误

只读属性

如果向让一个值只读,不可以修改就可以使用readonly

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

TypeScript具有ReadonlyArray<number>类型,它与Array<T>相似,只是把怕有可变方法去掉了,因此可以确保数组创建后再也不能被修改:

  let a: number[] = [1, 2, 3, 4];
  let ro: ReadonlyArray<number> = a;
  ro[0] = 12; // error!
  ro.push(5); // error!
  ro.length = 100; // error!
  a = ro; // error! 

额外的属性检查

看一个例子:

interface SquareConfig {
    color?: string;
    width?: number;
  }
  function createSquare(config: SquareConfig): { color: string; area: number } {
    // ...
  }
  let mySquare = createSquare({ colour: "red", width: 100 });

起初会认为这个是对的,接口定义了两个可选属性color和width。函数实际传入了width属性和一个接口没有定义的colour属性,但是这段代码会报错。

对象字面量会被特殊对待而且会经过额外属性检查,当将它们赋值给变量或作为参数传递的时候。 如果一个对象字面量存在任何“目标类型”不包含的属性时,你会得到一个错误。

最好的解决办法就是添加一个字符串索引签名

  interface SquareConfig {
    color?: string;
    width?: number;
    [propName: string]: any;
  }

函数类型

例子:

interface SearchFunc {
   (source: string, subString: string): boolean;
  }
  let mySearch: SearchFunc;
  mySearch = function(src, sub) {
    let result = src.search(sub);
    if (result == -1) {
      return false;
    }
    else {
      return true;
    }
  }

可索引的类型

可索引类型比如a[10]或obj['a']。 可索引类型具有一个索引签名,它描述了对象索引的类型,还有相应的索引返回值类型。

interface StringArray {
   [index: number]: string;
  }
  let myArray: StringArray;
  myArray = ["Bob", "Fred"];
  let myStr: string = myArray[0];

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# typescript  # 接口  # TypeScript 接口继承的具体使用  # TypeScript中的接口和泛型你了解吗  # typeScript 核心基础之接口interface  # typeScript 泛型使用和泛型接口结合  # TypeScript接口介绍  # 基于Typescript与Axios的接口请求管理详解  # TypeScript定义接口(interface)案例教程  # TypeScript 中接口详解  # TypeScript接口使用介绍  # 可选  # 就可以  # 有一个  # 返回值  # 的是  # 是个  # 最好的  # 多个  # 你会  # 规定了  # 不可以  # 这段  # 要用  # 不存在  # 掉了  # 报错  # 第三方  # 来实现  # 以对  # 解决办法 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何使用模型观察者?(Observer代码示例)  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  如何为不同团队 ID 动态生成多个独立按钮  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何登录建站主机?访问步骤全解析  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Laravel如何自定义错误页面(404, 500)?(代码示例)  大学网站设计制作软件有哪些,如何将网站制作成自己app?  网站制作价目表怎么做,珍爱网婚介费用多少?  JavaScript实现Fly Bird小游戏  如何在Ubuntu系统下快速搭建WordPress个人网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  Laravel Docker环境搭建教程_Laravel Sail使用指南  如何正确选择百度移动适配建站域名?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  北京的网站制作公司有哪些,哪个视频网站最好?  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在IIS中新建站点并解决端口绑定冲突?  如何自定义建站之星网站的导航菜单样式?  Laravel怎么上传文件_Laravel图片上传及存储配置  canvas 画布在主流浏览器中的尺寸限制详细介绍  ,怎么在广州志愿者网站注册?  免费网站制作appp,免费制作app哪个平台好?  网站建设要注意的标准 促进网站用户好感度!  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何在建站之星绑定自定义域名?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  如何在云主机上快速搭建网站?  音乐网站服务器如何优化API响应速度?  Swift中switch语句区间和元组模式匹配  网站制作报价单模板图片,小松挖机官方网站报价?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  详解Android图表 MPAndroidChart折线图  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  网站制作软件有哪些,制图软件有哪些?  如何彻底卸载建站之星软件?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  微信小程序 五星评分(包括半颗星评分)实例代码  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  南京网站制作费用,南京远驱官方网站?  如何为不同团队 ID 动态生成多个“认领值班”按钮  如何用PHP快速搭建高效网站?分步指南  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何在云主机上快速搭建多站点网站?