关键词:
1. 对比JavaScript
- TypeScript是JavaScript的超集,可编译为JavaScript,主要提供类型系统等增强代码的可读性和可维护性,适合中大型项目多人协作;
- TypeScript只会进行静态检查,如果发现有错误,编译的时候就会报错;
2. 原始数据类型
- boolean,number,string,null,undefined,void(一般用于返回值);
- 与void的区别是,undefined和null是所有类型的子类型,也就是说undefined类型的变量,可以赋值给number类型的变量,void不行;
3. 任意值any
- 赋值为任意类型,如果未指定类型,则为任意值类型;
4. 类型推论
- 若没指定变量类型赋值,则会根据之前变量的类型进行推论,之后重新赋值会检测类型;
5. 联合类型(Union Types)
- 多种类型 let a: string | number;
6. 接口(interface)
- 用于定义对象的类型,对类的行为进行抽象,对象的描述;接口首字母一般大写;
- 可选属性:a?: string;
- 任意属性:[propName: string]: string,一旦定义了任意属性,则确定属性和可选属性都必须是它的子属性;
- 只读属性:readOnly a: string;只能在创建阶段被赋值;
7. 数组
- 类型+[] 表示,let arr: number[] = [1, 2, 3];
- 数组泛型表示,let arr: Array<number> = [1, 2, 3];
- 接口表示
interface NumberArray
[index: number]: number
let arr: NumberArray = [1, 2, 3]; - any表示数组中允许出现任意类型;
- 常见的类数组都有自己的接口定义,如
IArguments
,NodeList
,HTMLCollection
等;
8. 函数
- 会对参数进行约束,不允许输入多余(或少)的参数;
- 在 TypeScript 的类型定义中,
=>
用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型; - 可选参数后面不允许再出现必须参数;
- TypeScript 会将添加了默认值的参数识别为可选参数,这时就不受「可选参数必须接在必需参数后面」的限制;
- 重载允许一个函数接受不同数量或类型的参数时,作出不同的处理;
9. 类型断言(Type Assertion)
- 可以用来手动指定一个值的类型;
- <类型>变量;
- 类型断言不是类型转换,断言成一个联合类型中不存在的类型是不允许的;
10. 声明文件
- declare var jQuery: (selector: string) => any;
- 通常我们会把类型声明放到一个单独的文件中,这就是声明文件,约定以.d.ts为后缀;
- 然后在使用到的文件的开头,用「三斜线指令」表示引用了声明文件,
/// <reference path=‘./jQuery.d.ts‘ />
11. 内置对象
- Boolean、Error、Date、RegExp等;
- DOM 和 BOM 的内置对象;
- TypeScript 核心库的定义文件中定义了所有浏览器环境需要用到的类型,并且是预置在 TypeScript 中;
- TypeScript 核心库的定义中不包含 Node.js 部分
12. 进阶
typescript小记
...来吧,一起入坑首先,ts是需要下载才可以使用的npminstall-gtypescript文件名是ts结尾的,比如index.ts,在react中组件文件会写成component.tsx如果你想看index.ts编译后的js文件,执 查看详情
springdatamongo使用小记(代码片段)
一、更新并返回更新后的值ObjectnewVal=mongoTemplate.findAndModify(query,update,FindAndModifyOptions.options().returnNew(true),Object.class,collectionName);二、批量操作BulkOperationsbulkOps=mongoTemplate.bulkOps( 查看详情
cgcontextref使用小记(代码片段)
1.用CGContextRef画文字在UIView的-(void)drawRect:(CGRect)rect方法中进行CGContextRefcontext=UIGraphicsGetCurrentContext();CGContextSetShouldAntialias(context,YES);//抗锯齿CGContextSetLineWidth(context,1.0f);//设置线宽/ 查看详情
cmath——小记(代码片段)
#include<cmath>pow(1,2);//1的二次方pow(1,0.5);//开二次方intc=abs(3-5);//整数的绝对值doubled=fabs(3.22-5.32);//浮点数的绝对值 查看详情
线段树小记(代码片段)
普通线段树可以[先标记(tag)后更改]或[边推(tag)边更改]打算从原来的[先标记(tag)后更改]改变为较为普及的[边推(tag)边更改]这里放模板题代码#include<cstdio>#include<iostream>#defineN100005#definelllonglongusingnamespacestd;structnodeintl,r 查看详情
react小记(代码片段)
组件间发通知可以使用observer.pub,其他组件在componentDidMount中observer.sub。在新的react中已经不再使用ref,取而代之的onRef=(node)=>this.xxx=node然后使用this.xxx调用方法。组件间共享数据可以使用redux 查看详情
多线程小记,线程控制并发(代码片段)
privateAutoResetEventexitEvent;privatevoidProcessA()while(true)Console.WriteLine("dosomething");if(exitEvent.WaitOne(waitTime))break; Console.WriteLine("exit");exitEvent.Set();privatevoidProc 查看详情
closehandle()函数小记(代码片段)
最近看一段程序,在创建线程时是这样写的:。。。。。。HANDLEhThread=CreateThread(NULL,0,StartServProc,pServPara,0,&dwThreadId);CloseHandle(hThread);。。。。。。有一个疑问:这不是刚创建完线程,又关闭了吗。查找相关资料,终于弄清楚是... 查看详情
面试小记(代码片段)
1.display:none和visibility:hidden两者的区别display:none:不占用空间visibility:hidden:占用空间,元素不显示,但影响布局visibility:hidden不会影响计数器的计数,如图所示,visibility:hidden虽然让一个元素不见了,但是其计数器仍在运行。这和d... 查看详情
整除分块小记(代码片段)
一个在反演里面经常用到的小技巧。整除分块是用来解决一个整除的求和问题:(sumlimits_i=1^nlfloorfracnifloor)如果直接暴力算,(O(n))的时间复杂度肯定接受不了。但是观察得到,对于一些(i),(lfloorfracnifloor)的值是相同的。例如(n=10)... 查看详情
githun&hexo建站小记(代码片段)
title:建站小记date:2018-03-0411:10:54updated:2018-03-0612:00:00tags:[hexo,next,建站,学习,前端技术,折腾,博客,记录]description:keywords:comments:image:---前言三月四日,建站小记。开学事情不算多,在这个还未适应学习的时间,得找一些事情来避免这... 查看详情
hive小记(代码片段)
一、数据库操作1、创建数据库hive(mypractice)>createdatabaseifnotexistsdb_hive;数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。可能出现的报错:FAILED:ExecutionError,returncode1fromorg.apache.hadoop.hive.ql.exec.DDLTask 查看详情
工作分割小记录(代码片段)
测试类@Testpublicvoidipfeng()String[]clients="android:1.5.0,1.6.0,1.6.1","apple:1.5.0,1.6.0,1.6.1","m:1.5.0,1.6.0,1.6.1","pc:1.5.0,1.6.0,1.6.1";ArrayList<String>list=newArrayList<>();getCl 查看详情
本地配置多个ssh密钥小记(代码片段)
之前在https://github.com中的项目发现提交代码的时候提示:MacBook-Pro:patternj1$gitpushremote:SupportforpasswordauthenticationwasremovedonAugust13,2021.Pleaseuseapersonalaccesstokeninstead.remote:Pleasesee 查看详情
文件包含漏洞小记(代码片段)
文件包含函数 include 调用文件用的函数 require<?phpecho‘<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>‘;//include‘1.txt‘;//$a=$_GET[‘page‘];$a="$_GET[page]";//echo$a;include$a;?&g 查看详情
thymeleaf使用小记(代码片段)
记录thymeleaf使用种遇到的一些问题,备忘。 前台页面显示当前登陆用户使用thymeleaf+springsecurity,想要显示当前登陆用户,有专门的标签。使用顺序如下1、 引入jar包(需要注意的是要同thymeleaf版本相对应)2、 maven坐... 查看详情
rsync使用小记(代码片段)
工作中遇到了有关rsync使用的问题,在这里记录下供有同样需求的人参考一下先说下环境服务端配置pidfile=/rsyncdata/rsyncd.pidport=873address=0.0.0.0charset=UTF-8reverselookup=nouid=0gid=0usechroot=nohostsallow=127.0.0.110.10.0.0/255.255.0.0logformat 查看详情
tensorflowobjectdetectionapi使用问题小记(代码片段)
1.FasterRCNNbatchsize只能设为1?参考:objectdetectapifasterrcnnOOM:https://github.com/tensorflow/models/issues/3697#issuecomment-425992882有三种可选的办法:Addpad_to_max_dimension:trueinkeep_aspec 查看详情