TypeScript笔记

文章介绍了TypeScript中的接口(interface)、keyof操作符的使用,以及枚举(enumeration)、any类型、泛型(generics)的概念。同时,提到了元组(tuples)在限定数组元素类型中的应用,类型推论在简化编码过程中的作用,以及可选链操作符(?.)的功能。此外,还讨论了.d.ts类型注解文件在不同情况下的使用。
摘要由CSDN通过智能技术生成

interface是用来定义接口类型的
keyof关键字是将interface接口类型的键收集到一个联合类型中
类型推论:ts中内置了一些推论机制
声明变量并赋值的时候会进行推论、基于函数的参数,函数的返回值的推论
作用 利用推论机制简化代码
字面量类型 const声明的数据是常量数据,是不能被修改的
应用场景 :字面量类型 配合 联合类型 做联合类型注解

{
   let sex: "男" | "女" ='男'
   sex='男'
   sex='女'
   
   type Dir='top'|'bottom'|'right'|'left'
   function changeDir(direction:Dir){
      console.log('改变方向'); 
   }
   changeDir('right')
   changeDir('left')
}

枚举类型 类似于字面量类型+联合类型
数字枚举: 默认关联的是索引,如果给定了值 以给定了的值为主
字符串枚举:如果给字符传以给定的字符串为主

{
   enum Direction{
      top=10,
      left=20,
      right,
      bottom
   }
   function changeDirection(str:Direction){
      console.log('改变方向了',str);
      
   }
   changeDirection(Direction.top)
   changeDirection(Direction.left)
   changeDirection(Direction.right)
   changeDirection(Direction.bottom)
}

打印结果是 10 ,20 ,21,22

any类型:不推荐使用 有时候数据类型不确定的,可以使用any占位 ,等到数据明确了,再将对应的类型设置给数据
泛型:函数和多种类型协调工作,复用的效果(将类型当作参数传递,就是泛型)

{
   function  fn<T>(n:T) :T{
      return n
   }
   fn<number>(10)
   fn<string>('a')
   fn<boolean>(false)
}

元组

元组类似于一个数组,只是每一个索引都预定了数据类型

类型推论

TypeScript里,在有些没有明确指出类型的地方,类型推论会帮助提供类型

keyof

允许我们遍历某种类型的属性,并通过 keyof 操作符提取其属性的名称。keyof 操作符是在 TypeScript 2.1 版本引入的,该操作符可以用于获取某种类型的所有键,其返回类型是联合类型

复杂数据类型

没有明确的对象和明确的属性,一定要做好类型注解
应用场景:ajax请求回来的数据进行赋值的时候

const todos=ref<{id:number,name:string,done:boolean}[]>([])
setTimeout(() => {
    todos.value=[{id:1,name:'asd',done:false},{id:2,name:'sda',done:true}]
}, 1000);

事件对象类型就是MouseEvent

可选链操作符

语法 : ?.
作用:当我们操作null | undefined 的时候不想让这个错误出来的时候就可以使用可选链操作符
可选链操作符试着访问某个属性,如果能访问到就输出,访问不到就返回undefined;只能读不能写
非空断言
明确告诉ts这个!.前面的元素是一定从在的,如果报错ts是不管的,他是可读可写的

d.ts(类型注解文件,不能写业务逻辑)

js 只能写业务代码,不能写类型声明(类型注解)
ts 不仅可以写业务代码,还可以做类型声明
d.ts类型声明文件 有分类
1、内置的d.ts类型声明文件,这种d.ts类型声明不需要我们去写
2、第三方包 自带有类型声明文件 这种d.ts类型声明不需要我们去写
2.1 下载第三方包的时候 会跟随包一同下载下来对应的 d.ts文件 例如axios
2.2 有的第三方包 在下载的时候 只会下载对应的js包,对应的d.ts文件需要单独下载 yarn add @types)例如jQuery
3、自己书写的d.ts文件
3.1 维护一些公司老项目,项目接入ts
3.2.数据响应结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值