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. js磁力线代码(非压缩,自己在压缩的版本上优化了代码,易于阅读)

    拿去白嫖吧: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" ...

  2. 有意思的GitHub项目

    1.强大而又优雅的运维一键自动化管理工具,朋友公司在做,大牛支持,墙裂推荐 官方网站:http://www.bigops.com/ 2.用 PHP 写一个命令行音乐搜索下载器,支持 QQ.网易.酷狗. ...

  3. C# 工具类LogHelper

    一.创建一个WinForm的项目,并通过NuGet安装log4net. 二.创建LogHelper类以及log4net.config配置文件. 三.编写相关代码. 1.LogHelper类 using ...

  4. C# WPF 时钟动画(1/2)

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# WPF 时钟动画(1/2) 内容目录 实现效果 业务场景 编码实现 本文参考 源码下载 ...

  5. sublime修改快捷键样式

    样式----------------{ "always_show_minimap_viewport": true, "auto_find_in_selection&quo ...

  6. java简单验证码生成程序

    下面的函数,返回的字符串就是所需验证码 public String id(){ Random ra =new Random(); st=""; String [] w= {&quo ...

  7. Docker学习参考网站

    Docker——从入门到实践 https://www.yuque.com/grasilife/docker 2.阿里源网站:https://cr.console.aliyun.com 3.DaoClo ...

  8. H5_0011:JS动态创建html并设置CSS属性

    1,创建html文本,并设置指定css样式 r = function(e) { var t = document.createElement("div"); t.innerHTML ...

  9. VS的使用技巧记录:

    调试: F5:调试运行 会在编译前进行debug F10:单步步过   遇到函数不会进入函数内部执行 F11:单步步入   遇到函数会进入函数一步一步执行 ctrl+F5:直接运行不调试

  10. 【转】idea远程调试

    适用于web服务,thrift服务 对于分布式系统的调试不知道大家有什么好的方法.对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时.今天咱们来了解 ...