TypeScript的基本使用

一、搭建ts运行环境

使用ts的好处

1.友好的代码提示
2.通过静态类型检查,来判断该类型下面有哪些属性。如果访问了不存在的属性或方法,在编译时就会抛出异常
3.引入静态类型声明,减少不必要的类型判断和文档注释;
4.类、接口的使用更易于构建和维护组件
5.方便多人开发,可以使他人快速了解变量的类型,加速接管代码,减少维护成本

ts使用方式

全局安装ts

npm i -g typescript

通过命令行将ts文件编译为js
可以在后面加入-w参数监听源文件,当源文件发生改动时自动编译

tsc xxx.ts 

通过命令行创建ts配置文件 => tsconfig,json

tsc --init

二、ts常用语法

类型的声明

type A = string

类型注解——给变量绑定类型

const a: A = '23'

联合类型

let a: string|number = 'hello'

交叉类型

type A = {
  username: string
}
type B = {
  age: number
}
const o: A&B = {
  username: '222',
  age:1
}

类在ts中既是变量声明空间 也是类型声明空间

class Foo{
}
let a = Foo
type A = Foo

类型断言

let a: unknown = 'hello';
a.map(( )=> {})//	报错

let b: unknown = 'hello';
(b as []).map(( )=> {})	//	正常

非空断言

let c: string|undefined = undefined
c.length	//报错
c!.length

三、ts类型系统

基本类型

const a: string = 'a'
const b: number = 1
const c: boolean = false
const d: null = null
const e: void = undefined
const f: undefined = undefined
const g: symbol = Symbol()

数组类型

let arr1: number[] = [1,2]
let arr2: (number|string)[] = [1,2,'3']
let arr3: Array<number> = [1,2]
export{}

元组类型

let arr4: [number,string] = [1,'2']

对象类型

 type A = {
  username: string
  age?: number  //?表示可选属性
  [index: string]: any  //  索引签名 约束其他属性的类型
 }

 const a: A = {
  username:'123',
 }

函数类型与void类型


function foo(n: number, m?: string): number {
  return n + 1;
}

foo(1);

const foo1:(n: number, m?: string)=> void = (n,m) => {

}
foo1(12)

函数重载

function foo2(n1: number): any;
function foo2(n1: number, n2: number): any;
function foo2(n1: number, n2: number,n3: number): any;
function foo2(n1: number, n2?: number, n3?: number) {}
//有一个实现签名 + 一个或多个重载签名合成
//但外部调用函数重载定义的函数时,只能调用重载签名,不能调用实现签名
//调用重载签名的函数时,会根据传递的参数来判断你调用的是哪一个函数
//只有一个函数体,只有实现签名配备了函数体,所有的重载签名都只有签名, 没有配备函数体
foo2(1);
foo2(1,2);
foo2(1,2,3);

可调用注解

type A = {  //  可调用注解 针对函数重载进行的类型注解
  (n1:number,n2:number):any
  (n1:string,n2:string):any
}

function foo2(n1: number, n2: number): any;
function foo2(n1: string, n2: string): any;
function foo2(n1: number|string, n2: number|string) {}
const a: A = foo2

type B = {  //  可调用注解 给函数添加属性
  (n1:number):number
  username?: string
}

let foo:B = n => n
foo.username = "h"

枚举类型

//如果枚举属性没有赋值,默认会从0开始梯增
//枚举是只读属性
//枚举既可以作为值,也可以作为类型
//枚举属性具备反向映射(通过值访问键)
//	const enum声明枚举,编译结果更简洁(删除源对象)
 enum Roles {
   SUPER_ADMIN = 'super_admin',
   ADMIN = 'admin',
   USER = 'user'
 }

 let a: Roles.ADMIN = Roles.ADMIN
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值