TS

479 阅读3分钟

TS 的类型

原始类型 冒号后面的内容叫:类型注解

	number
		let num: number = 2000
	string
		let str: string = '北京欢迎你'
	boolean
		let flag: boolean = false
	undefined
		let und: undefined = undefined 
	null
		let n: null = null
	symbol
		let s: symbol = symbol()

数组类型

	let arr: number[ ] = [100,200,300]    为数字类型的数组
            
	联合
		let arr: (number | string)[ ] = [100,200,'北京',’上海‘]      数组的成员为数字或者字符串
		let arr1 : number | string[ ] = 2002      为数字或者字符串类型的数组
                    
元组     元组就是另一个类型的数组,它明确元素数量 和 类型 的数组
	let position : [number,string] = [100, ' 北京 ' ]

对象类型

	因为对象里的属性有可能很多,所以我们可以把定义的数据类型赋给一个变量
		type myObj = { name: string, age: number, arr: (number | string)[],ob:{sex:string,height: number} }
		let obj1: myObj = { name: '张三', age: 21, arr:[1,'2',3],ob:{sex:'男',height:175} }

函数类型 给函数添加类型,实际给参数和返回值添加类型

	普通函数
		function fn(num1:number,num2 : number) :number { 
                        return  num1 + num2
                }
                
	箭头函数
		const fn1 = (num1:number ,num2 : number) : number =>{
                    return num1 + num2 
                }
                
	同时指定参数和返回值类型
		let fn2:(name:string,age:number,sex: string) => any (name,age,sex)=>{
                    return `我叫${name},今年${age},性别${sex}`
                }

void 类型 : 没有返回值

		let fn1 = function(name:string):void {
                     console.log("hello"+name);
                }

可选参数

		function fn(name:string,age?: number){
                    return `我叫${name},我今年${age}岁`
                }

枚举类型

枚举是一个被命名的整型常数的集合,用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型

通俗来说,枚举就是一个对象的所有可能取值的集合

在日常生活中也很常见,例如表示星期的 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY 就可以看成是一个枚举

枚举类型可以分为:

  • 数字枚举
  • 字符串枚举

数字枚举:

当我们声明一个枚举类型是,虽然没有给它们赋值,但是它们的值其实是默认的数字类型,而且默认从 0 开始依次累加:

Snipaste_2023-02-17_15-57-07.png

如果我们将第一个值进行赋值后,后面的值也会根据前一个值进行累加 1:

Snipaste_2023-02-17_15-57-27.png

字符串枚举

注:字符串枚举必须指定默认值

Snipaste_2023-02-17_16-01-29.png

如果设定了一个变量为字符串之后,后续的字段也需要赋值字符串,否则报错:

Snipaste_2023-02-17_16-01-37.png

接口

接口 是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的 去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法

简单来讲,一个接口所描述的是一个对象相关的属性和方法,但并不提供具体创建此对象实例的方法

typescript的核心功能之一就是对类型做检测,虽然这种检测方式是“鸭式辨型法”,而接口的作用就是为为这些类型命名和为你的代码或第三方代码定义一个约定

接口定义

通过 interface 定义

Snipaste_2023-02-17_16-12-24.png

限制类 通过 implements 给类限制数据类型

Snipaste_2023-02-17_16-15-17.png

通过 interface 定义的,也可限制对象

Snipaste_2023-02-17_16-17-14.png