TypeScript

  • Post author:
  • Post category:其他



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中,可以进行多继承吗?可以进行多实现吗?

​ 可以



版权声明:本文为qq_48637533原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。