typescript简要总结
文章目录
- 一、数组(Array)
- 二、元组(Tuple)
- 三、联合类型(Union)
- 四、字面量类型(Literal)
- 五、枚举类型(Enum)
- 六、Any
- 七、unknow
- 八、void(原生没有void)
- 九、undefined
- 十、never(常用于处理异常)
- 十一、类型适配(类型断言)Type Assertions
- 十二、函数类型
- 十三、Object对象类型
- 十四、interface接口
- 十五、class类
- 十六、Access Modifier 访问修饰符(public、private、protected)
- 十七、Module模块(export)
- 十八、Generics泛型
- markdown添加目录: @[TOC]
基础类型
一、数组(Array)
let list1: number[] = [1,2,3,4]
let list2: Array<number> = [1,2,3,4](泛型)
let list3 = [1,2,3,4]
let list4 = [1,"666"] //(string|number)[]
let list5: any[] = [1,"888",true] //any[]
二、元组(Tuple)
let person1: [number,string] = [1,"7878"]
(固定长度,固定类型的数组)
bug:使用push可以突破元组
三、联合类型(Union)
let union: string | number
let union2: string | number | boolean | string[]
四、字面量类型(Literal)
let union2: 0 | 1 | 2
五、枚举类型(Enum)
enum Color{red,green,blue
}
let color = Color.blue
console.log(color)
如果blue未赋值,输出内容应该是11
enum Color{red = 5,green = 10,blue = 12
}
let color = Color.blue
console.log(color) //12
enum Color{red = 5,green = 10,blue = 'BBLLUUEE'
}
let color = Color.blue
console.log(color) //BBLLUUEE
六、Any
适合代码快速成型,快速上线,有安全隐患
let randomValue: any = 666
七、unknow
不保证类型,但是能保证类型安全
let randomValue: unknow = 666
八、void(原生没有void)
没有返回值(变量本身就不存在)
function hello() : void{console.log("hello")
}
九、undefined
不存在(变量未赋值或初始化)
function hello() : undefined{console.log("hello")return
}
十、never(常用于处理异常)
一个函数永远执行不完
function throwError(message: string,errorCode: number): never{throw{message,errorCode}
}
throwError('not Found',404)
function whileLoop(true): never{while(true){console.log("haha")}
}
十一、类型适配(类型断言)Type Assertions
let message : any
message="abc"
let aaa = (<string>message).endWith("c")
let bbb = (message as string).endWidth("c")
十二、函数类型
let log = function(message){console.log(message)
}
let log1 = (message : string) => console.log(message)
log1("hello")
let log2 = (message: string , code : number) => console.log(message,code)
log2("hello",2)
加上问号,可省略此参数:code(加上问号或者默认值的数据需放在后面,否则会报错)
let log3 = (message: string , code?: number) => console.log(message,code)
log3("hello",2) //hello 2
log3("hello") //hello undefined
可设置默认值:code(加上问号或者默认值的数据需放在后面,否则会报错)
let log4 = (message: string , code: number=123) =>{ console.log(message,code)
}
log4("hello",99) //hello 99
log4("hello") //hello 123
十三、Object对象类型
完全可以省略object
const person: object= {firstName:"张三",lastName:"李四",age:18
}
console.log(person.age)
十四、interface接口
let draw = (x,y) => {console.log({x,y}) //{ x: 1, y: 2 }
}
draw(1,2)
let draw = (point: Point) => {console.log({ x:point.x , y:point.y })
}
draw({ x:100 , y:200 }) //{ x:100 , y:200 }
draw({ x:'张三' , y:'李四' }) //不符合要求
interface Point {x:number;y:number;
}
高内聚,低耦合
高内聚:功能相关的内容应该放在同一个模块里边
低耦合:
十五、class类
interface IPoint{x:number;y:number;drawPoint:()=>voidgetDistances: (p: IPoint) => number
}class Point implements IPoint{//x:number;//y:number;//使用public时不可以再用?(问号,可缺少)constructor( public x:number,public y:number=2){//this.x = x;//this.y = y;}drawPoint = () => {console.log("x:",this.x,",y:",this.y)}getDistances = (p: IPoint) => {return Math.pow(p.x-this.x,2) + Math.pow(p.y-this.y,2)}
}
const point = new Point(288,499)
point.drawPoint()
十六、Access Modifier 访问修饰符(public、private、protected)
1)public(公共的):被 public所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。
2)private(私有的):被 private所修饰的属性和方法只能在该类内部使用
3)protected (受保护的):被protected所修饰的属性和方法可以在类内部、相同包以及该类的子所访问。
4)默认的(不加任何访问修饰符):在类内部以及相同包下面的所使用。
十七、Module模块(export)
export
十八、Generics泛型
let lastInArray=<T>(arr: Arry<T>)=>{return arr[arr.length-1];
}
等同于
let lastInArray=<T>(arr: T[])=>{return arr[arr.length-1];
}
const l1 = lastInArray([1,2,3,4]) //4
const l2 = lastInArray<string>(["a","b","c","d"]) //d
const l3 = lastInArray<string | number>(["a",2,"c",8]) //8
console.log(l1,l2,l3)
多个泛型类型,用逗号隔开
let make=<T,Y>(x:T,y:Y)=>[x,y]
const v1 = make(1,"one")
const v2 = make<boolean,number>(true,2)
console.log(v1,v2)
markdown添加目录: @[TOC]
typescript简要总结相关推荐
- TypeScript+vue使用与迁移经验总结
源宝导读:ERP平台的前端底层使用了Vue作为组件的基础架构,而使用了TypeScript语言进行组件的封装与开发.本文将简要介绍平台在使用TypeScript和Vue框架进行老功能重构时的经验总结. ...
- any、never......TypeScript 中这些特殊的类型,你会用了吗?
作者 | geekAbyte 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 以下为译文: 在本文中,我们来简要地讨论一下 TypeScript 中的三种有趣的类型:any.unknow ...
- Linux与数据库简要说明
Linux与数据库简要总结 Linux Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类U ...
- ieda ts文件报错_Java开发平台IntelliJ IDEA教程:开发,运行和调试TypeScript源代码-IntelliJ IDEA系列教程:-慧都网...
Java开发平台开发,运行和调试TypeScript源代码 IntelliJ IDEA是Java语言开发的集成环境,IntelliJ在业界被公认为优秀的Java开发工具之一,尤其在智能代码助手.代码自 ...
- 开发者回避使用 TypeScript 的三个借口,以及应当使用 TypeScript 的更有说服力的原因...
本文为翻译文章 原文标题:3 Excuses Developers Give To Avoid TypeScript - and the Better Reasons They Should Use ...
- TypeScript 4.3 beta 版本正式发布:新增import语句补全,对模板字符串类型进行改进...
作者 | TypeScript 团队 译者 | 王强 策划 | 田晓旭 来源|前端之巅 今天,我们很高兴为大家带来了 TypeScript 4.3 的 Beta 版本! 要开始使用这个 Beta 版本 ...
- 学习TypeScript数据类型-从零到英雄
It's all the rage these days in the world of web development - TypeScript. I'd wager by now you hav ...
- TypeScript 4.0的新增功能? Fancier元组
If you've been doing any web development in the past few years, chances are you've heard a lot about ...
- 超简单的react和typescript和引入scss项目搭建流程
1.首先我们先创建一个react项目,react官网也有react项目搭建的命令 npx create-react-app my-app cd my-app 2.安装我们项目需要的样式依赖,这个项目我 ...
最新文章
- 图书馆图书上架_【消息】暑假好去处,明光市图书馆很多新书上架啦......
- TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别
- python 中爬虫的运用
- 韩国央行行长李柱烈:加密货币的波动给金融稳定带来风险
- java与javascript
- 怎么提前体验鸿蒙,鸿蒙OS手机版明天发布,开发者提前体验,上手操作毫无难度...
- 全网首发!超全SparseR-CNN实战教程
- 20考研率辉计算机复试(贪心法)
- node_注册页面+连接数据库+加密
- 冰点还原精灵如何关闭?
- 电脑声卡或者耳机接口坏了怎么办
- 【Unity3D】Unity5打不开VS2017,Unity打开VS2017异常,并且有时候最后打开的是Mono的解决方案
- 百度飞桨-基于CV的工业读表案例(修改读表范围和数值)
- 翻译:《JavaScript 权威指南(第5版)》第一章(一)
- Python 完美诠释“高内聚“概念的 IO 流 API 体系结构
- CSDN日报20170302——《一个想法:成立草根技术联盟对开发人员进行技术定级解决企业员工招聘难问题!》
- SafeNet加密软件详细步骤
- vs2010打包解决“.NET Framework 3.5 SP1”
- 超级网搜(SuperSearch) - 3.6版,一次关键字输入,多个引擎同时搜索,提高搜索效率,减少解决问题的时间
- CityEngine创造鲜活的三维数字城市
热门文章
- 基于Davenport风速谱单点时程模拟
- 基于Servlet的图书借阅系统,万能项目,写毕设不用愁了
- Eformer: Edge Enhancement based Transformer for Medical ImageDenoising--用于医学图像去噪的基于边缘增强的 Transformer
- ARM平台FS6818/s5p6818开发板实验3 —— UART实验
- unity-《金庸群侠传3D重制版》起始界面解析
- 十四届蓝桥杯EDA科目客观题汇总
- 『论文笔记』Are VQA Systems RAD? Measuring Robustness to Augmented Data with Focused Interventions
- ubuntu声卡驱动
- 【恢复】慕课网《网页布局基础》学习笔记
- 30岁后的营销策划,都去做什么了?