转载地址

TypeScript基础入门 - 接口 - 简介

项目实践仓库

https://github.com/durban89/typescript_demo.git
tag: 1.0.6

为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。

npm install -D ts-node

后面自己在练习的时候可以这样使用

npx ts-node src/learn_basic_types.ts
npx ts-node 脚本路径

接口

TypeScript的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。

接口初探

下面通过一个简单示例来观察接口是如何工作的:

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

运行后接到的结果如下

Size 10 Object

类型检查器会查看printLabel的调用。 printLabel有一个参数,并要求这个对象参数有一个名为label类型为string的属性。 需要注意的是,我们传入的对象参数实际上会包含很多属性,但是编译器只会检查那些必需的属性是否存在,并且其类型是否匹配。 然而,有些时候TypeScript却并不会这么宽松,示例演示如下。下面我们重写上面的例子,这次使用接口来描述:必须包含一个label属性且类型为string:

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

运行后接到的结果如下

Size 10 Object

LabelledValue接口就好比一个名字,用来描述上面例子里的要求。 它代表了有一个 label属性且类型为string的对象。 需要注意的是,我们在这里并不能像在其它语言里一样,说传给 printLabel的对象实现了这个接口。我们只会去关注值的外形。 只要传入的对象满足上面提到的必要条件,那么它就是被允许的。

还有一点值得提的是,类型检查器不会去检查属性的顺序,只要相应的属性存在并且类型也是对的就可以。

本实例结束实践项目地址

https://github.com/durban89/typescript_demo.git
tag: 1.0.7

TypeScript基础入门 - 接口 - 简介相关推荐

  1. TypeScript基础入门 - 接口 - 继承接口

    转载地址 TypeScript基础入门 - 接口 - 继承接口 项目实践仓库 https://github.com/durban89/typescript_demo.git tag: 1.0.13 为 ...

  2. TypeScript基础入门 - 函数 - 简介

    2019独角兽企业重金招聘Python工程师标准>>> 转载 TypeScript基础入门 - 函数 - 简介 项目实践仓库 https://github.com/durban89/ ...

  3. TypeScript基础入门 - 接口 - 可索引的类型

    转载地址 TypeScript基础入门 - 接口 - 可索引的类型 项目实践仓库 https://github.com/durban89/typescript_demo.git tag: 1.0.11 ...

  4. TypeScript基础入门 - 接口 - 可选属性

    2019独角兽企业重金招聘Python工程师标准>>> 转载地址 TypeScript基础入门 - 接口 - 可选属性 项目实践仓库 https://github.com/durba ...

  5. TypeScript基础入门 - 泛型 - 泛型类型

    2019独角兽企业重金招聘Python工程师标准>>> 转载 TypeScript基础入门 - 泛型 - 泛型类型 项目实践仓库 https://github.com/durban8 ...

  6. TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions)

    2019独角兽企业重金招聘Python工程师标准>>> 转发 TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions) 高级类型 可辨识联合(D ...

  7. TypeScript基础入门

    目录 本文概览: 1. TypeScript的特点 2. TypeScript的安装与使用 (1)项目初始化 (2)配置TSLint 本文概览: 1. TypeScript的特点 TypeScript ...

  8. C语言 extern - C语言零基础入门教程

    目录 一.简介 二.extern 修饰变量 1.在单文件中使用 extern 2.在多文件中使用 extern 三.extern 修饰函数 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C+ ...

  9. C语言 函数值传递和址传递 - C语言零基础入门教程

    目录 一.简介 1.函数声明:不需要实现这个函数的功能 2.函数定义:必须实现这个函数的功能 3.函数调用:调用之前必须先声明或者定义 二.函数值传递 三.函数址传递 四.函数值传递和址传递区别 五. ...

最新文章

  1. centos jdbc配置mysql_CentOS安装glassfish4.0配置jdbc连接mysql
  2. [LeetCode]: 96: Unique Binary Search Trees
  3. 听说英飞凌内推技术岗位有大额奖金
  4. 每天AI资讯这么多,该看哪些?推荐一份优质AI内参!
  5. 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
  6. 云原生 DevOps,模型化应用交付能力很重要
  7. 老对手 Intel 与 AMD 也开始合作打造新品了,Nvidia 怎么看?
  8. java自动下载更新程序_android实现软件自动更新的步骤
  9. python rpc调用_从0到1:全面理解 RPC 远程调用
  10. Zephry_GPIO的中断使用详解以及中断原理
  11. setState的参数接收函数
  12. 如何远程配置DHCP服务器
  13. 央视推荐的护眼台灯是什么牌子?教育照明灯具品牌
  14. 公司人事管理系统(C++)
  15. iOS - UIButton连续点击事件控制
  16. 用 python 写了一个日记本
  17. 30天突破英语口语!(MP3版)
  18. 华为路由器:GRE技术
  19. 解决的问题记录(持续更新)
  20. mysql 5.7.21 winx64_mysql5.7.21 winx64安装配置图文分享

热门文章

  1. 独立的定义有多重等价表述方式
  2. vue3.0 execle 导出功能实现
  3. Android Studio如何隐藏系统的状态栏
  4. 计算机组成原理第一章(跟着王道课程做的笔记)
  5. sql重复数据只保留一条_一条SQL完成跨数据库实例Join查询
  6. python界面颜色设置_pycharm修改界面主题颜色的方法
  7. 小程序数据框有重影_关于拖动滚动条编辑框数据重影的问题
  8. w10 Sentinel的下载和安装
  9. 大学生计算机大赛课题,第14届中国大学生计算机设计大赛云南赛区决赛举行 32个项目胜出...
  10. 函数头模板_Python新手爬虫,爬取PPT模板