typeScript常用类型(二)

本篇学习记录对象,接口,元组, 字面量类型,枚举,any类型

对象

JS的对象是由key,value组成的,而在ts中对象的类型就是描述对象的结构

声明对象:

// 声明方法一:
let person :{name:string;age:number;sayHi(name:string):void;great():void } = { 
  name:'章三',
  age:18,
  sayHi(name){},
  great:()=>{}
}
// 声明方法二:
type customObject = {
  name:string
  age:number
  sayHi(name:string):void
  great():void
}
let person2:customObject ={
  name:'章三',
  age:18,
  sayHi(name){},
  great:()=>{}
}
console.log(person2);

可选属性:

// 可选属性
type customObject1 = {
  name:string
  age?:number
  sayHi(name:string):void
  great():void
}
let person3:customObject1 ={
  name:'章三',
  sayHi(name){},
  great:()=>{}
}
console.log(person3);

接口:interface

当一个对象被多次使用的时候,就使用接口(interface)来定义对象类型,达到复用的目的

// 接口 interface
interface customObject2 {
  name:string
  age?:number
  sayHi(name:string):void
  great():void
}
let person4:customObject2 ={
  name:'章三',
  sayHi(name){},
  great:()=>{}
}
console.log(person4);

接口(interface)与类型别名(type)的区别
相同点:都可以给对象指定类型
不同点:接口(interface)只能给对象制定类型,类型别名(type)可以给任何类型指定别名

接口的继承(extends)

如果两个或者多个接口里面有公共的属性,就可以把这些属性抽离出来,作为一个公共的接口

// 接口继承
interface pageIndex{
  page:number
  size:number
}
// interface codeIndex{
//   page:number
//   size:number
//   code:number
//   message:string
// }
interface codeIndex extends pageIndex{
  code:number
  message:string
}
let info:codeIndex = {
  code:200,
  message:'great',
  page:1,
  size:20
}
console.log(info);

元组(tuple)

元组:已知元素数量和类型的数组,各个元素的类型不必相同

let x:[string,number]

 x = ['11',1 ]

字面量类型

  // let 和 const 
  let a = '123'
  const b = '123'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上图,a 的类型是string, b 的类型是他本身,并且b不能被修改,就是本身

// 一般配合联合类型一起使用
function directives(direction:'up'|'down'|'left'|'right'){

}
directives('right')

枚举(enum)

枚举:enum
使用枚举定义一些带名字的常量。 TypeScript支持数字的和基于字符串的枚举。
枚举成员默认有值,且默认是从0开始自增的值
枚举成员的值为数字称为【数字枚举】,
枚举成员的值为字符串称为【字符串枚举】,字符串枚举没有自增长的特点,必须要给字符串枚举设置初始化的值

// 定义一个枚举
 enum Direction {
  Up,
  Down ,
  Left,
  Right,
}
function enumFun(params:Direction) {
  console.log(Direction);
}
// 使用枚举【Direction.值】
enumFun(Direction.Down)
// 字符串枚举
enum Direction2 {
  Up ='up',
  Down = 'down' ,
  Left ='left',
  Right='right',
}

any类型

any类型:
ts中不推荐使用any,会失去ts类型保护。(会让typescript变成anyscrpt)

let obj:any ={ x: 0 }

// 访问不存在的属性不报错|给不存在的属性赋值不报错,甚至对于错误的操
//作都不进行报错
obj.aaa
obj.aaa = 10
obj()
/**
 * 隐士any
 * 声明一个变量不给赋值,也不指定默认值
 * 或者函数的参数不指定类型
 */
let a // any
function anyFun (num1){
// 参数num1 是any类型
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值