首页 > 其他分享 >ts 学习

ts 学习

时间:2023-04-30 20:55:37浏览次数:27  
标签:function string ts number 学习 123 let any

1、基础类型

let a: (number | String) = new String('123')
// String 可以是 new String/ '' 形式, string 则不行

2、数组

数组特殊需求

数组可能是number、string 类型
数组中有一个元素可有可无
数组中前面固定, 后面可以随意添加

// 数组可能是number、string 类型
let arr: Array<number|string> = []
arr = ['123',1,2,3]

// 数字类型的数组
let arr1: number[] = []

// 数组中有一个元素可有可无
let arr2: [number, string?] = [1] // 元组

// 数组中前面固定, 后面可以随意添加
let arr3: [number, string?, ...(string|number)[]] = [1,'',123]

3、对象

基本使用

// 基本使用
let obj: {} = { a: 123, c: 123 } // 这样使用和 any 差不多意思,意义不是很大
// 一般使用
let obj: { x: 123, y: number} = { x: 123, y: 123}

对象特殊需求

规定键名是一个数字
属性可有可无
固定某几个属性, 其他属性随便添加

// 规定键名是一个数字
let obj1: { [key: number]: number } = { 1: 1 }

// 属性可有可无
let obj: { x: 123, y: number, z?: number} = { x: 123, y: 123}

// 固定某几个属性, 其他属性随便添加
let obj1: { x: 123, y: number, [key: number]: number|{} } = { x: 123, y: 1, 1: {}}

4、 函数

基本使用

// 直接定义一个函数的参数和返回
function f1(a:string): string {}
// 定义一个函数变量
let f2:(a:string)=>string = function(a){}

函数特殊需求

参数默认值和可选
this 处理
剩余参数处理
根据不同类型参数,有不同返回

// 参数和可选
function f1(a: number, b?: number) {}
// 剩余参数可选
function f1(a: number, b?: number, ...arg: (number|string)[]):any {}
// 参数默认值
function f1(a = 3) {}
// this 处理
function f3(this:void, a:number) {}
// 根据不同类型参数,有不同返回(重载)

5、类

class Jsclass {
  public a: number = 123
  static target: number = 123
  readonly c = 2
  f2(a: string): string

  f2(a: string) {
    return a
  }

  private f1() {
    console.log(1)
  }
}
// Jsclass  可以当作类型使用
let obj: Jsclass = { 
  a: 1, 
  c: 2, 
  f2: function(a) { return a }
}

6、特殊类型与高级类型

unknown 和 any

  1. any 和 unknow 类型都可以分配任何值
  2. Unkown 相当于更安全的 any, unknown 类型只能拿赋值给 unknown 或者 any
let value: unknown = {}
let value2: any = '123'

function f1(a:any):any {

}

let value3: string = value2 // any可以任意复制,会有问题
let vlaue4: string = vlaue // 这里报错, unknown 只能复制给 any/unknown 

never

  1. never 代表永远不会出现
  2. never 类型的变量可以赋值给任何东西, 但是 never 类型不能有任何值
  3. 错误类型,或者永远没有结果的返回值可以用 never
function throwError():never { throw new Error() }

联合类型

let a: string|number

交叉类型

class obj1class { a: number }
class obj2class { b: number }
let obj3: obj1class & obj2class  { a: 1, b: 2 }

7、接口与type

type aString = string | number | number[]
type obj1 = { a: number }
type obj2 = { b: string }
type objAll = obj1 & obj2
// 函数
type f1 = (a: string) => string

let b: aString = [1,2,3]
// 函数、对象、 类、 数组
// 对象接口
interface ojb3 {
  type: { a1: number }
  type2?: string,
  [propName:string]: any
}

function f2(a:obj3) {
  console.log(a.type.a1)
}
f2({type:{a1:23}})

// 函数
interface obj5 {
  a: 123,
  f1(): (a:number) => string
}

标签:function,string,ts,number,学习,123,let,any
From: https://www.cnblogs.com/caijinghong/p/17365285.html

相关文章

  • iOS学习之UINavigationController…
    1、显示Toolbar 在RootViewController.m的-(void)viewDidLoad方法中添加代码,这样Toobar就显示出来了。1.setToolbarHidden:NOanimated:YES];2、在ToolBar上添加UIBarButtonItem新建几个UIBarButtonItem,然后以数组的形式添加到Toolbar中1.*one=[[UIBarButtonI......
  • OOP面向对象第二个月学习总结
    OOP面向对象第二个月学习总结目录 · 前言 · 设计与分析 · 踩坑心得 · 改进建议 · 总结 一、前言这个月的学习相比上个月的学习,难度就提升了极多,为了让我们更好的理解面向对象的几个特点和原则,题目以及作业的难度,复杂度,综合性增加了许多。主要有几次实验,......
  • dwr学习之提高篇
    在本人的这篇文章的基础上http://chenzheng8975.iteye.com/blog/1842080深入学习: dwr工具类:<scripttype="text/javascript"src="<%=request.getContextPath()%>/dwr/util.js"></script>dwr转化对象和异常:<convertconverter="bean"match=&q......
  • ibatis学习之一对多关联
    基于本人的这篇文章http://chenzheng8975.iteye.com/blog/1718765的基础上,对ibatis进行深入的学习:Clazz.java:packagecom.cz.model;importjava.util.ArrayList;importjava.util.List;publicclassClazz{ privateintid; privateStringclassname; privateList<Stud......
  • 网页编辑器学习之xheditor
    因为工作需要就学习了一下网页编辑器方面的知识,我总结了一下,比较流行的网页编辑器有CKeditor或者也可以叫做fckeditor,我也动手做了实际的案例发现可以跑起来,就是那个上传的文件管理感觉不太好,所以看了一下csdn的编辑器用的是xheditor所以就在网上找了一下相关的知识。http://h5566h......
  • Struts2标签学习
    <td><s:iftest="%{#l.res_scope==1}">完全共享</s:if><s:elseiftest="%{#l.res_scope==2}">班级共享</s:elseif><s:else>好友共享</s:else></td><h3>发布资源</h3&......
  • ibatis学习注意事项
    1.对于多参数的问题:在ibatis中,会发现其输入参数只能有一个,于是当出现需要进行多个输入参数的时候,就要想点办法了,我看到的有以下两种比较好的方法能够解决这个问题用String代替<selectid="checkLogin"parameterClass="java.lang.String"resultClass="java.lang.Integer">SELECT......
  • 堆与二叉搜索树学习笔记
    部分内容来自OI-WIKI。1.堆堆的定义堆是一棵二叉树,满足每个节点的键值都大于等于它的父亲节点或者小于等于它的父亲节点。每个节点的键值都大于等于它的父亲节点的叫小根堆,每个节点的键值都小于等于它的父亲节点的叫大根堆。优先队列是一种抽象数据类型,它是一种容器,里面有......
  • Http学习之使用HttpURLConnection…
    post请求的OutputStream实际上不是网络流,而是写入内存,在getInputStream中才真正把写道流里面的内容作为正文与根据之前的配置生成的httprequest头合并成真正的http request,并在此时才真正向服务器发送。函数可以改变这个模式,设置了ChunkedStreamingMode后,不再等待Out......
  • 详细的BoltDB学习记录文档
    最近项目中用到了boltdb这个go开发的key/value数据库,但是之前并有接触过,所以特意去看了官方,也找了些资料,网上找的资料要不就是官方文档的翻译,要不就是简单的介绍一点,都不是很全,所以这里记录下。话不多说,冲!本篇文章是参考了官方的文档,内容和官方的基本一致,只是加了些自己的理解......