TS简介
ts是以js为基础构建的语言,是JavaScript的超集。typescript扩展了JavaScript,并且添加了类型,可以在任何支持js的平台中执行。但是ts不能被JS解析器直接执行!我们需要把ts编译成js
ts增加了什么?
类型、支持ES的新特性、添加ES不具备的新特性、丰富了配置选项、强大的开发工具。
基本类型
· 类型声明
let a : number = 10;//第一种写法
let a : number ;
a= 10;//第二种写法
也可以直接let a =10;但是不常用
可以用竖线“|”来连接多个类型(联合类型)
let b = "hello"|"world";
b可以赋值成hello或者world。
let c :boolen | string ;
c的值可以为Boolean类型或者string类型。
类型any表示任意类型,可以任意赋值。一个变量设置为any相当于对变量关闭了ts的类型检测。
如:
let c :any;//等价于 let c;即声明时不指定类型,ts会自动识别为any。
c=10;
c="hello";
c=true;
一般在开发中不使用any类型。
unknown表示未知类型。
unknown类型的变量不能直接赋值给其他变量。
let a :object;//object 表示一个js对象。
//object在开发中一般不使用,因为js中对象太多。
a=function(){
}
//{}用来指定对象中可以包含哪些属性。
//语法:{属性名:属性值,属性名:属性值}
let b :{name:string,age ?:number};//?表示可选属性。
b={name:'zhangsan'};
let d :(c:number) =>number;
d=function(n1): number{
return 2*n1;
}
let e: string [];//表示字符串数组。
e = ['a','b'];
let f :number [];//表示数值类型数组。
let h : [string,string];//定义一个元组,第一个值为string,第二个值也为string。
//元组语法:[类型,类型,类型]
//enum:枚举
enum Gender {
male = 0,
female = 1
}
let j : {name : string, gender:Gender};
j = {
name : 'zhangsan',
gender :Gender.male
}
console.log(j.gender === Gender.male);
面向对象
ts也是一门面向对象语言。
类
//使用class来定义一个类
class Person {
//定义实例对象
name :string ='zhangsan';
//在属性前使用static关键字可以定义类属性(静态属性)
//在属性前使用readonly关键字表示只读属性,无法修改值。
static age :number = 10;
//定义方法
sayhello (){
console.log("hello everyone!");
}
}
const per = new Person();
console.log(Person.age);
console.log(per.name);
//console.log(per.age)是错误的。
per.sayhello;
构造方法
class Dog{
name :string;
age :number;
//construtor被称为构造函数。构造函数会在对象创建时调用
constructor(name:string,age:number){
//this表示当前实例。在构造函数中,当前对象就是创建的对象。
this.name= name;
this.age= age;
}
bark(){
alert("wak!wak!wak!");
}
}
const dog =new Dog('xiaohei',3);
const dog1 =new Dog('xiaofen',2);
console.log(dog);
console.log(dog1);
继承
class A extends B{}
B为父类,A为子类。
super关键字:
在子类想引用父类的实例,可以用super。常用来调用父类中的构造函数。
抽象类:
以abstract开头的类为继承类,抽象类不能用来创建对象。抽象类中可以添加抽象方法。抽象方法没有方法体,抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写。
接口
//接口就是用来定义一个类的结构。用来定义一个类中应该包含哪些类型和方法。接口可以重复声明。
//接口中的所有属性都不能有实际的值。在接口中所有的方法都是抽象方法。
interface myinterface {
name:string,
age:number;
}
interface myinterface {
gender :string
}
const obj : myinterface = {
name :'sss',
age : 111,
gender :'male'
}
总结:ts相当于结合了js与java的部分语法,如果有js和java的基础那么学ts非常轻松。