type与interface

相同点

  • interface、type关键字自定义变量数据类型

    不同点

    type关键字:定义函数
  1. type addType = (a:number,b:number)=>number

interface关键字:定义函数

  1. interface addType1{
  2. (a:number,b:number):number
  3. }
  4. let fun:addType = function(a,b){
  5. return a + b
  6. }
  7. fun(1,2)

type

type是什么?作用?


type是定义类型别名

语法和使用


语法:type 名称 = 值
使用:

interface接口

什么叫interface?

interface(使用接口)是来定义对象类型的
作用是:校验工具,验证对象的属性是否符合规则

基本语法和使用

interface格式

interface 首字母大写变量名{
key: value的类型 ;
}
⚠️:首字母大写,interface中以分号结尾

可选属性

只读属性

readonly

指定多个属性值其中的一个

该字段的值只能是指定的某个值或指定的其他值:使用|符号

任意属性

[propName: string] : any

  1. interface Person{
  2. name:string;
  3. age:number;
  4. sex:'男'|'女'; // |代表或,只能是两个值中的一个
  5. readonly cardId:string; // readonly代表只读属性
  6. hourse?:boolean; // ?代表改属性可有可无
  7. [propName: string]:any; // 任意属性名且属性名必须是string,任意属性名的值是any
  8. run():string; // 定义方法返回值
  9. }
  10. let obj: Person = {
  11. name:'zhangsan',
  12. age:18,
  13. sex:'男',
  14. cardId:'510xxx',
  15. xxx:[],
  16. run:function(){
  17. return 'a'
  18. }
  19. }

函数类型

接口除了描述带有属性的普通对象外,接口也可以描述函数类型。

  1. interface FunType{
  2. (v1:string,v2:number):string
  3. }
  4. let useFun:FunType = function(str,num){
  5. return str + num
  6. }
  7. console.log(useFun('xxx',123));

对于函数类型的类型检查来说,函数的参数名不需要与接口里定义的名字相匹配,函数的参数会逐个进行检查,要求对应位置上的参数类型是兼容的