TypeScript

ts官方文档

TypeScript

不是一个新语言,是javaScript的一个超集,即javaScript加上强类型
是一个第三方框架工具,给js做了大量的拓展以及强类型校验

安装

npm i -g typescript
tsc --version 
tsc是一个编译器,在很多的平台上都能安装

运行

typeScript 需要tsc进行编译之后才能在nodejs或 浏览器中运行
编译完成之后,hello.ts  --> hello.js 会生成hello.js
tsc 1-hello.ts   
node 1-hello.js

特点

跨平台:TypeScript 编译器可以安装在任何操作系统上,包括 Windows、macOS 和 Linux。

ES6 特性:TypeScript 包含 ECMAScript 2015 (ES6) 的大部分特性,例如箭头函数。面向对象的语言:TypeScript 提供所有标准的 OOP 功能,如类、接口和模块。

静态类型检查:TypeScript 使用静态类型并帮助在编译时进行类型检查。因此,你可以在编写代码时发现编译时错误,而无需运行脚本。

数据类型

静态类型校验

即固定死类型
let a:number //那么a就固定式number类型
function test(a:number,b:number):number{
	//该函数是一个number类型,那么返回值就是number类型
}
引用数据类型
let arr:(number | object);
let arr1:Array<string>  = ['1','2']
export default {}   //一定要写这个,否则会报错

元组数据类型

声明一个数组的时候指代数组的数量以及类型就是元组
格式:
	let [number,string,boolean] = [1,'hello',false]

枚举类型

应用于前后端交互的时候,对数据定义的约束,如名字就传一个名字,性别要传送真正的性别。其他值都是不合法的值
默认枚举
格式:
	enum Season{
		summer
		spring
		winter
		autumn
	} 
	// Season  ‘0’:‘summer’,‘1’:‘spring’
	可以通过下标拿到数值 
	例:
	Season[1]
字符串枚举
格式:
	enum Gender{
		male='男'
		female='女'
	}
	Gender.male

任意类型 any

格式:
let a:any

泛型 Array

尖括号里面可以写任意类型的,和java类似 ,
class Student{
	name:string,
	age:number
}
let arr:Array<Student>=[{name:'xiaoming',age:12}]

void

函数没有返回值
格式:
function sum():void{}

可选参数 ?

格式
function sum(a?:number){}
注意,可选参数必须写在必选参数后面

接口

与java类似,通过interface关键字来声明;通过类使用关键字implements实现接口,类里面需要重写里面的属性或方法

声明接口

interface StudentInterface{
	name;
	say(msg:string):void;
}

类实现接口

class Student implements StudentInterface{
	name;
	say(msg:string):viod{}
}

对象实现接口

let res:StudentInterface ={
	name=''
	say(msg:string):viod{
		console.log('hello')
	}
}

类是创建对象的模板,一个类可以创建多个对象,与java类似,可以继承,且可以使用父类的引用来创建子类的实例
例:
	let s:People = new Student();
	那么 s 是子类的实例

类的继承 extends

类继承使用extends关键字,在子类中引用父类的方法或变量使用super关键字,注意继承是和接口不一样的,可以不用重写父类的方法;
格式:
	class Student extends Person{
		console.log(super.name); //name为父类的属性
	}
	let s1:Student = new Student();
	s1.自己的属性,s1.父类的属性

多态

一种对象多种形态,即一个对象既可以是继承的父类的形态,也可以是本身自己的形态。多态的前提就是子类要继承父类

重写

当子类对父类的方法进行重写,那么子类实现调用的时候,会调用子类的方法

抽象类 abstract

无法创建对象,即new 一个对象,为了让其它类继承抽象类,并强制要求子类实现抽象方法;
注意只有抽象类才能有抽象方法,抽象方法没有方法体,即 {}
格式:
	abstract class Student{
		abstract study():void;
	}

字面量创建实例

格式:
let s1:Student = {}
注意,通过字面量创建实例的话,不仅要重写Student类的所有方法以及属性,还要重写Student父类所有的方法以及属性。

访问修饰符

修饰类中的成员属性以及成员方法

pubilc

当前类、子类、其他类都可以访问到该属性,

protect

当前类、子类 可以访问,其他类即new的实例不可以访问,方法也不能访问

private

当前类

面试题

1.子类继承父类,通过父类类型引用可以指向子类对象吗?[可以]
class Child extends Parent{
}
let c1:Person=new Child()
2.通过父类类型得引用可以调用子类得特性吗?[不可以]
3.什么是重写?
子类继承父类?子类中方法的签名与父类一致,子类的方法回重写父类得方法
就近原则
4.如果子类对父类进行了重写,通过父类类型引用指向子类体现谁的特点?(子类方法)
5.什么是抽象类?
1.无法实例化
2.抽象类存在抽象方法和非抽象方法
3.如果一个类中包含了抽象方法,该类一定是抽象类
4.如果一个类继承了抽象类,并且这个抽象类中有多个抽象方法
那么子类1.实现所有的抽象方法
2.成为抽象类
6.什么是接口?接口就是抽象到极致的抽象类
如果一个类实现了接口,那么这个类需要将接口中所有未实现方法进行实现

7.如何实现一个接口

​ class Student implements StudentInterFace{}

8.接口可以继承吗?

子接口可以将父接口中所有的未实现方法进行继承

9.在ts中,可以进行多继承吗?可以进行多实现吗?

​ 可以

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值