typescript学习

本文介绍了TypeScript的基本类型如boolean和number,以及数组和元组的用法。接着讲解了接口(Interface)用于检查数据类型,函数的定义和泛型的应用,包括类型断言和泛型约束。此外,还提到了枚举(Enum)和联合类型(UnionTypes)的概念。
摘要由CSDN通过智能技术生成

1.基本类型的用法

	let isDone : boolean = true;
	let num : number = 10000000;
	let firstName : string = 'viking';

2.数组和元组

数组

	let arr : number[] = [1,2,3,4]
	arr.push(3)

元组(指定只能传入规定类型的值)

	let arr : [number, string] = [1,'viking']
	arr.push(3)

3.接口 (检查数据类型)

readonly 是指不能改变的

	interface Iperson {
		readonly id: number,
		num: number,
		name: string
	}
	let obj: Iperson = {
		id: 1,
		num: 10000000,
		name: 'viking'
	}

4.函数

函数使用 interface 传入指定类型, 返回值也需要返回指定类型

	const add = (x: number, y: number, z?: number): number =>{
		if(typeof z === 'number') {
			return x + y + z;
		} else {
			return x + y;
		}
	}
	interface ISum {
		(x: number, y: number, z?: number): number
	}
	let add2: ISum = add;

5.联合类型

定义多种类型

	const numberOrString: number | string
	numberOrString.length
	numberOrString.toString()

6.类型断言

用 as 关键字,定义确定类型进行使用属性和方法,也可以不使用关键字进行使用typeof进行判断

	// 这里我们可以用 as 关键字,告诉typescript 编译器,你没法判断我的代码,但是我本人很清楚,这里我就把它看作是一个 string,你可以给他用 string 的方法。
	function getLength(input: string | number): number {
	 	const str = input as string
	 	if (str.length) {
	   		return str.length
	  	} else {
	    	const number = input as number
	    	return number.toString().length
	  	}
	}

7.枚举

用enum关键字,定义枚举

	const enum Direction {
		Up = 'UP',
		Down = 'DOWN',
		Left = 'LEFT',
		Right = 'RIGHT',
	}
	const value = 'UP';
	if(value === Direction.Up) {
		console.log('go up!')
	}

8.泛型

泛型关键字 < T > 在函数形参括号前面使用, 作用是定义获取类型并可以用来指定类型

	function echo <T> (any: T) : T {
		return any;
	}
	const result = echo(123)
	function swap<T, U> (tuple:[T, U]): [U, T] {
		return [tuple[1], tuple[0]]
	}
	const result2 = swap('string', 123)

9.泛型约束

因为不知道会传入那种泛型类型所以不能随意操作属性和方法 可以使用接口的方式以extends的方式定义

	function add<T>(ary: T): T {
		// 直接使用方法是不正确的只能是传入当前类型的才可以
		console.log(ary.length);
		return ary;
	}
	// 上例中,泛型 T 不一定包含属性 length,我们可以给他传入任意类型,当然有些不包括 length 属性,那样就会报错
	interface IWithLength {
	  length: number;
	}
	function echoWithLength<T extends IWithLength>(arg: T): T {
	  console.log(arg.length)
	  return arg
	}
	
	echoWithLength('str')
	const result3 = echoWithLength({length: 10})
	const result4 = echoWithLength([1, 2, 3])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值