回顾下ts新增类型

  • 联合类型
  • 自定义类型(类型别名)
  • 接口
  • 元组
  • 字面量类型
  • 枚举
  • void
  • .....等等

3.1联合类型

当一个数组中既是string,也可以是number类型时怎么实现呢?

这时就要使用联合类型啦

语法 :

类型1 |  类型2 |  类型3....

eg:

// 定义一个变量,类型是number 或者 null
let timer: number | null = null
timer = setInterval(() => {}, 1000)// 定义一个数组,数组中可以有数字或者字符串
// 需要注意 | 的优先级
let arr: (number | string)[] = [1, 'abc', 2]

3.2自定义类型(类型别名)(重点)

格式:

定义   type  别名 = 类型

type s = string // 定义  const str1:s = 'abc'const str2:string = 'abc'

3.2-1自定义类型

type  新类型 = 类型1 | 类型2 | 类型3

给复杂类型起别名是 一般首字母大写

一看就知道原先的写法只有一行代码,简洁,但建议不用, 因为给它起了别名利于复用

type MyArr = (number | string) []
const arr:MyArr = [1, '1'] //原先写法
const arr:(number | string) [] = [1,'1']

3.2-2自定义对象  -- 参数可选(对象)  ?

type MyGir1 = {address?:string,  //对象可选name:string,age:number, //hello的类型,是一个函数,没有形参,返回一个stringhello?:() => string // hello: () => {}greet?():void ,  //greet: function() {}}let g1 : MyGir1 = {greet: function(){},hello:function(){return 'abc'},age:18,name:'小红',address :'无'}let g2: MyGir1 ={age:30,name:'小明',//address:'地球上'}const fn =(h:MyGir1) =>{h.address = '按地方'}

3.2-3函数参数可选

 //若设置,有个可选,有个不选 (a:number,b? :number)const f = (a?:number,b?:number) => {}f()f(1,2)f(1)//设置了默认值,是不是表示这个值  可传不可传 ===> 可选const fn =(x:number =1 ,y : number =2) => {return x + y}//让参数是可选的,只要添加一个特殊的符号 ? fn()  // ===> 3fn(10)  // ===> 12

3.3 void

void : 如果函数没有返回值,设置为void格式

1.不在乎返回值

2.return 空的

3.return undefined

 //普通函数function fn(a:number,b:string):void {//return //return 1  报错return undefined}const abc = fn()//箭头函数const f = ():void => {}//自定义函数type MyFn = () => voidconst f1:MyFn = () => {}

3.4元组类型

元组: 一种特殊的数组,它指定了元素的个数及对应的类型

//经纬度表示地址let position: number[] = [116.2317, 39.5427]//number[] :它只能表示一个数组,元素是number类型//需求: 一个数组,两个元素,第一个是数值,第二个也是数值//元组: 一种特殊的数组,它约定了元素的个数及对应的类型const c : [string,number] = ['小花',39.5427]

3.5字面量类型

它一般和联合类型一起使用,表示多个固定的值,只能取一个

type Gender = '男' | '女'

let m : Gender = '男'

 let str1 = '你好啊'const str2 = '特殊的,不一样的'//1.str是啥类型? string类型,它一定,必须保存字符串类型//2.str2是   '特殊的,不一样' 就是字面量类型 ,//它一般是和联合类型一起使用,表示多个固定的值中取一个type Gender = '男' | '女'let man : Gender = '男'let women:Gender = "女"

3.6枚举类型 enum

它的功能类似于 字面量类型 + 联合类型组合的功能

  //需求:定义一个变量,它的值只能是'up','down','left','right'中一个//定义枚举// enum Direction {'up'=100,'down','left','right'}// console.log(Direction.right); // ===> 103// enum Direction {'up'='up,'down'='down','left'='a','right'='b'}// console.log(Direction.right); // ===> benum Direction {'up','down','left','right'}//使用枚举//枚举的名字.xxxlet d2:Direction = Direction.upfunction f(d:Direction) {if(d === Direction.left){}}//1.ts中的类型声明语句转为js之后会丢弃//但是枚举不会//使用枚举之后,会导致代码的体积变大//2.这个类型有值// console.log() 可以正常输出枚举//场景:后端给我们的性别是 0(男),1(女)\//    写代码能看到有语义的字符串,而代码运行的结果有具体的值enum Gender {'man'=0,'woman'=1}let g1: Gender = Gender.manconsole.log(g1); // ===> 0

3.7类型断言    as

as作用就是将大类型(document.createElement),变为小类型(HTMLAnchorElement)

const aLink = document.createElement('a') as HTMLAnchorElement

鼠标放在aLink上,就会显示   HTMLAnchorElement

3.8接口   interface

当一个对象类型被多次使用时,一般会使用接口(interface)来描述对象的类型,达到复用的目的

都可以定义对象

 interface Iperson{name:stringage:numbersayHello() :void}const person:Iperson = {name:'小花',age:18,sayHello() {},}

type 跟 接口 interface  区别

type不限于对象,它也可以自定义其他类型

interface只能定义对象

type不能继承

interface能继承

接口 继承格式(extends)

接口1 会包含所有接口2的属性

interface 接口1 extends 接口2 {

接口1的自己的类型

}

interface Ipoint2D{x:number,y:number}const p1 :Ipoint2D = {x :123,y:1241}//接口继承interface Ipoint3D extends Ipoint2D {z:number} const p2 : Ipoint3D ={x : 13,y:14,z:520}

3.9any类型

any 类型,没有限制

有些时候可以临时写一下

1. 前端没有明确拿到后端的数据的时候,不知道使用什么类型来保存

2.可以先用下any ,让代码通过运行

有些时候,就应该是any

console.log()  它的参数就是any

默认为any

let   b

function f(b){ }

3. 10分钟学会ts类型 之 ts新增类型相关推荐

  1. python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...

    原标题:10分钟学会用python写游戏!Python其实很简单! Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程 ...

  2. 手机版python3h如何自制游戏_Python 飞机大战|10 分钟学会用 python 写游戏

    Python 飞机大战|10 分钟学会用 python 写游戏 2018 年 python 语言大火, 这把火看趋势已然延续到了 2019 年! 除了在科学计算领域 python 有用武之地之外, 在 ...

  3. pulsar 容量_[Pulsar系列] 10分钟学会Pulsar消息系统概念

    Apache Pulsar Pulsar是一个支持多租户的.高性能的服务与服务之间消息通讯的解决方案,最初由雅虎开发,现在由Apache软件基金会管理. Pulsar在Yahoo的生产环境运行了三年多 ...

  4. UWP开发入门(十九)——10分钟学会在VS2015中使用Git

    原文:UWP开发入门(十九)--10分钟学会在VS2015中使用Git 写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支 ...

  5. 百度贴吧自动发帖_引流网赚之百度贴吧引流窍门:实操引流教程百度贴吧零成本自动顶帖+10分钟学会豆瓣顶帖引流...

    引流网赚之百度贴吧窍门:实操引流教程<百度贴吧零成本自动顶帖>+<10分钟学会豆瓣顶帖引流> 关于百度贴吧的引流方式有很多,像常见的关键词排名引流,比如,百度贴吧引流效果好不好 ...

  6. NiosII软处理器快速入门- 10分钟学会NiosII(1)

    http://hi.baidu.com/hieda/blog/item/7f69080e9efb80ce7bcbe13d.html Nios简单介绍: Nios II是一个用户可配置的通用RISC嵌入 ...

  7. #今日论文推荐#1小时学会走路,10分钟学会翻身,世界模型让新生机器狗掌握多项技能

    #今日论文推荐#1小时学会走路,10分钟学会翻身,世界模型让新生机器狗掌握多项技能 人类宝宝在出生后的第1年里,就会逐渐掌握协调能力,学习坐.立.翻滚和爬行. 那么机器人呢? 机器人能完成多复杂的任务 ...

  8. 惠普服务器win10安装系统教程,惠普笔记本U盘装Win10系统图文教程 10分钟学会重装系统...

    U盘装系统,是电脑爱好者"老生常谈"的一个话题,在"电脑百事网"能找到许多类似的教程文章,不过今天的教程与往期有些不一样,首先是制作启动U盘,选用了一些更安全的 ...

  9. 最完整的WordPress建站教程,新手10分钟学会建站

    假如你是一个菜鸟,也能从0开始,10分钟学会搭建(wordpress,Dede,Discuz!..)网站. 网站=域名+空间和数据库+网站程序+模板 1准备材料 [域名] 网址就相当于家的住址,记住和 ...

  10. 大学不教的20小时定律,10分钟学会受用终身

    大学不教的20小时定律,10分钟学会受用终身 2018-05-05 20:10:35 来源: 网易公开课 "20小时速成",一听到这句话,脑海中浮现的就是网络上那些小广告:&quo ...

最新文章

  1. 一起谈.NET技术,OnLoad与Page_Load的差异分析
  2. ubuntu 安装spark
  3. java 线程数_在虚拟机中是什么限制java线程数量?这方面涉及哪些调优?
  4. CSS图片裁剪Clip
  5. 山石防火墙CLI创建VLAN
  6. 打造个人多媒体服务器之二
  7. Android NDK开发如何解决logcat日志打印不全
  8. 厉害!一年两登顶刊的31岁浙大硕导荣获杰青!
  9. 建立一个被称为sroot()的函数,返回其参数的二次方根,重载sroot()三次,让它返回整数,长整数与双精度的二次方根
  10. 创建批处理文件.bat文件(删除指定文件夹下的文件及文件夹并循环)
  11. Cesium开发环境搭建的几种方法总结
  12. mysql mrgmyisam_mysql MRG_MyISAM 引擎报错解决
  13. 不要说话 -- 陈奕迅/小柯
  14. vi使用的时候按esc后按**shift + :**时进入不了末行
  15. 大学里的网络安全专业为什么没多少人就读?
  16. 【ROM制作工具】V1.0.0.23新版全新发布啦
  17. 日本互联网的十大知名巨头!你听说过几个?
  18. serial port not selected
  19. Java中判断两个日期是否在同一个月
  20. C++/模拟键盘输入/自动打字机/解放双手

热门文章

  1. ppt 如何做好PPT演讲
  2. 链表回文(牛客网:OR36 链表的回文结构)
  3. 郭天祥单片机视频教学习题答案(一)
  4. 点阵字体文件查看器 c#(HZK16)
  5. 信盈达蓝牙打印机项目
  6. 企企通携手塑料新材料行业龙头【佛塑科技】,以数字化采购引领行业转型升级
  7. C语言飞机大战题目,C语言飞机大战源码.pdf
  8. 判断给定序列是否为BST后序遍历序列
  9. 用RegexBuddy编写正则表达式
  10. el-table 多级表头固定列问题