TypeScript

npm i -g typescript安装 tsc-v检测是否安装成功

npm i -g ts-node 使用方法:node-ts 文件名

数组类型

let num:number[ ]=[1,2,3]

let num:(number|string)[ ]=[1,2,3,'a'] 联合类型

类型别名

type current=(number|string)[ ]

let num:current=[1,2,3,'a']

函数类型

function fun(num1:number,num2:number):number{

return num1+num2

}

const fun=(num1:number,num2:number):number=>{

return num1+num2

}

或者const fun=(num1:number,num2:number)=>number=(num1,num2)=>{

return num1+num2

}

可选参数:num1?num2?只能放在最后面。

对象类型

let person:{name:string;age:number;sayHi(name:string):void}={//换行不要加分号

name:'jack',

age:18,

sayHi(name){}

}

对象接口

interface person{

name:string

age:number

sayHi()void

}

let per:person={

name:'jack',

age:10,

sayHi(){}

}

接口只能为对象指定类型,类型别名可以为任意类型指定别名,加等于号

type person={

name:string

age:number

sayHi()void

}

接口继承

interface point2d {x:number;y:number}

interface point3d extends point2d {z:number}

元组

let position:[number,number]=[12,23]

声明变量并立即初始化值,函数返回值,可以省略类型注解

let age=18

技巧:在浏览器控制台,通过console.dir()打印DOM元素,在属性列表的最后面,即可看到该元素的类型。获取a标签的href属性

const alink=document.getElementById('link') as HTMLAnchorElement

字面量类型

function vhangeDirection(direct:'up'|'down'){}

changeDirection('up或者down')

枚举类型

enum Direction {up,down}//enum Direction {up=1,down}自增//enum Direction {up='up',down='down'}字符串枚举一定要赋值

function changedirection(direction:Direction){}

changedirection(Direction.up)

枚举成员都有值

ts中typeof可以在类型上下文引用变量或属性的类型

let p={x:1,y:2}//point是一个对象

function formatpoint(point: typeof p) {}=function formatpoint(point: {x:number;y:number}) {}

formatpoint({x:1,y:100})

typescript高级类型

class类

class person{

age:number

gender='男'

构造函数

class person{

age:number

gender:string

constructor(age:number,gender:string){

this.age=age

this.gender=gender

}//构造函数不需要返回值

}

实例方法

class point{

x=10

y=20

scale(n:number):void{

this.x*=n

this.y*=n

}

}

}//类型推断

继承

class animal{

move(){console.log('move')}

}

class dog extends animal{

bark(){console.log('a')}

}

const d=new dog()

实例对象d具有父类animal和子类dog所有属性和方法

实现接口

interface singable{

sing():void

}

class person implements singable{

sing(){console.log('aaaa')}

}//person类中必须提高接口指定的所有方法和属性

protected:只能在其声明类和子类可见,任何实例对象都不可见

private:表示私有的,只在当前类可见,实例对象以及子类都是不可见的

readonly:用来表示只读,构造函数以外不能对属性赋值//只能修饰属性,不能修饰方法

对象类型兼容:

class Point { x: number; y: number }
class Point3D { x: number; y: number; Z: number }
const p: Point= new Point3D( )

          少                      多

对于函数的兼容

type F1 = ( a: number )=> void
type F2 = ( a: number, b: number) => void
let f1: F1
let f2:F2=f1

         多   少

交叉类型

interface Person {name: string }
interface Contact { phone: string }
type PersonDetail = Person & Contact
let obj: PersonDetail = {
name :' jack',
phone:'133.'

}

泛型

function id <Type>(value:Type):Type{return value}

let num:number

let num=id<number>(10)

泛型约束

interface ILength{length:number}

function id<Type extends ILength>(value:Type):Type{

console.log(value.length)

return value

}

TS中有两种文件类型: 1 .ts文件2 .d.ts 文件。
.ts文件:

1.既包含类型信息又可执行代码。
2.可以被编译为.js 文件,然后执行代码。
3. 用途:编写程序代码的地方。
.d.ts文件:
1. 只包含类型信息的类型声明文件。
2.不会生成.js 文件,仅用于提供类型信息。
3. 用途:为JS提供类型信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值