ts中的接口主要的作用是:

  • 对“对象”进行约束描述
  • 对“类”的一部分行为进行抽象

一、属性接口

接口中可定义 确定属性、可选属性、任意属性、只读属性

1、确定属性
interface UserInfo {
name: string;
age: number;
} const myInfo: UserInfo = {
name: "haha",
age: 20
};

接口中约束好的确定属性,定义对象变量的时候 不能少

2、可选属性

interface UserInfo {
name: string;
age: number;
sex?:string
} const myInfo: UserInfo = {
name: "haha",
age: 20
};

接口中的可选属性,是表示在对象变量中可以不存在

3、任意属性

interface UserInfo {
name: string;
age: number;
sex?:string ;
[propName: string]:any;
} const myInfo: UserInfo = {
name: "haha",
age: 20,
test1: 'lala',
test2: 'ff',
test3:123
};

注:一旦定义了任意属性,那么确定属性和可选属性的类型都必须是任意属性类型的子类;

定义了任意属性后,对象变量中的属性个数才可以出现比接口的属性数量多的情况

4、只读属性

interface UserInfo {
readonly id: number;
name: string;
age: number;
sex?: string;
[propName: string]: any;
} const myInfo: UserInfo = {
id: ,
name: "haha",
age: 20,
test1: "lala",
test2: "ff",
test3: 123
};

只读属性也是确定属性,在对象变量定义的时候必须有值,此后不能修改

二、函数接口

对方法传入的参数以及返回值进行约束

interface Func {
(param1: string, param2: number): boolean;
}
let myFunc: Func = function(param1, param2){
return typeof param1 === "string" && typeof param2 === "number";
};
myFunc("22222", 1111);

三、索引接口(不常用)

可对数组或对象进行约束

interface ArrIndex {
[index:number]: string
}
interface Obj {
  [index:string]:string
}
let myArr: ArrIndex = ['first','second']
let myObj:Obj = {
  name: 'kkkk'
}

四、类接口

对类进行约束,和抽象类有点相似

  • 类实现接口implements
  • 接口继承接口
  • 接口继承类

ts中接口的用法的更多相关文章

  1. ts中的接口

    // 接口:接口是一种定义行为和规范,在程序设计中接口起到限制和规范的作用.接口定义某一 // 一批类所需要遵循的规范,接口不关系这些类的内部实现,之规定这些类必须提供某些方法 /* 1.对批量方法进 ...

  2. java中this的用法?

    2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次 java中this的用法? import java.awt.*; import java.awt.even ...

  3. 框架源码系列十:Spring AOP(AOP的核心概念回顾、Spring中AOP的用法、Spring AOP 源码学习)

    一.AOP的核心概念回顾 https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/core.html#a ...

  4. Delphi中ClientDataSet的用法小结

    Delphi中ClientDataSet的用法小结 TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds,是基于文件型数据存储和操作的控件.该控件封装了对数据进 ...

  5. 七、golang中接口、反射

    一.接口定义 1.定义 interface类型可以定义一组方法,但是这些不需要实现,并且interface不能包含任何变量 package main import ( "fmt" ...

  6. python中MySQLdb模块用法实例

    篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中 ...

  7. MySQL中CONCAT()的用法

    MySQL中CONCAT()的用法 在日常开发过程中,特别是在书写接口的时候,经常会遇到字符串拼接的情况,比如在返回图片数据时,数据库里往往存储的是相对路径,而接口里一般是存放绝对地址,这就需要字符串 ...

  8. TypeScript完全解读(26课时)_9.TypeScript完全解读-TS中的类

    9.TypeScript完全解读-TS中的类 创建class.ts文件,并在index.ts内引用 创建一个类,这个类在创建好后有好几个地方都标红了 这是tslint的一些验证规则 一保存就会自动修复 ...

  9. java中stringBuilder的用法

    java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需 ...

随机推荐

  1. 字符串相等 impossible 1480

    题目描述 两个长度不超过80的字符串,串中包括大写.小写和空格字符,去掉空格并忽略大小写后,判断两个字符串是否相等. 输入描述 第1行输入是测试数据的组数n,每组测试数据占两行,第1行是第一个字符串s ...

  2. ng--tolist说明

    起步 下载模板: git clone https://github.com/tastejs/todomvc-app-template.git --depth 1 初始化项目: ng new todom ...

  3. Android显示单元--像素、分辨率、颜色

    1.像素 老子曾说“天下难事必作于易,天下大事必作于细”,Android开发也是一样,再复杂的App也无非就是数百万个像素点的排列组合.像素虽然看似简单,但是里面大有学问.如果在开发时对像素单位不以为 ...

  4. Mac苹果电脑如何格式化?

    一般而言,我们想要在Windows系统上实现格式化操作是非常容易的.然而在苹果电脑上,我们则需要通过launchpad下的磁盘工具来进行,相对而言比较麻烦.关于“苹果电脑怎么格式化”的问题也困扰着无数 ...

  5. php弱语言特性-计算科学计数法

    php处理字符串时存在一个缺陷问题,如果字符串为“1e1”,本该是一个正常的字符串,但是php会将它认为是科学计数法里面的e: 也就是按照数学的科学计数法来说:1e1=10^1=10,因此php会把这 ...

  6. 08-SV面向对象编程的高级技巧指南

    1.原始类与扩展类 (1)原始类被称为父类或者超类,扩展类被称为派生类或者子类.扩展类可以直接访问原始类和其本身的所有变量,应该将原始类中的子程序定义成虚拟的,这样它们就可以在扩展类中重定义.new函 ...

  7. 程序里面带有浮点数,默认会自动转换为double类型存储

    带有浮点数,默认会转换为double类型存储. #include "common.h" #include <stdio.h> #include <stdlib.h ...

  8. 树莓派环境下使用python将h264格式的视频转为mp4

    个人博客 地址:https://www.wenhaofan.com/a/20190430144809 下载安装MP4Box 命令行下执行以下指令安装MP4Box   sudo apt-get inst ...

  9. H5_0010:JS动态创建CSS,并向CSS中传入参数值

    1,在html中定义style 2,js中创建css,并添加进入head标签style中 !function(e, t, i) { n.classList && n.classList ...

  10. GYCTF easy_thinking

    前期储备:ThinkPHP6 任意文件操作漏洞分析 https://paper.seebug.org/1114/ 学习链接: https://www.freebuf.com/articles/web/ ...