typescript学习笔记

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非常轻松。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingshengda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值