typescript小记(代码片段)

colima colima     2023-01-04     457

关键词:

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表示数组中允许出现任意类型;
  • 常见的类数组都有自己的接口定义,如 IArgumentsNodeListHTMLCollection 等;

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 查看详情