前端学习-TypeScript

102 阅读2分钟

TypeScript

. TypeScript是JavaScript的超级:js有的ts都有

实现TypeScipt向JavaScript的转变

image.png

ts-node 可以编辑和执行ts文件

image.png

//数组元素都为string类型
let arr1:string[]=["北京","上海","天津"]
// console.log(arr1);
//数组元素为string或者number
let arr2:(string|number)[]=["北京","上海",100,"天津",]
// console.log(arr2);
//数组元素为string或者number数组组成的
let arr3:string|number[]=[100]
// arr3=["北京"]
console.log(arr3);
//元祖限定元素数量和元素类别
let positon:[number,number]=[100,200]

//类型定义
// type mytype={name:string,age: number}
// let obj1: mytype={name: "张三",age: 18}
// console.log(obj1);


// ####################箭头函数  ###########################
// const fn1=(num1:number,num2: number):number=>{
//     return num1+num2
// }
// console.log(fn1(5,20));

//############# 同时指定参数和返回值 ##################
 // const fn3:(num1:number,num2:number)=>number=(num1,num2)=>{
// return num1+num2
// }
// console.log(fn3(500,100));


//######################viod类型没有返回值类型#############################
// const fn4=function(username:string):void {
//     console.log("hello"+username);
    
// }

TS类的继承

  • 创建实例对象,实例对象触发构造函数,并且传递参数,构造函数接受参数后并且赋值 1:通过 extends 来继承父类
    2:通过 super 来初始化父类的构造函数 并且传递参数
class F{
    name: string;
    constructor(name: string){
        this.name = name;
    }
    run():string{
        return `${this.name}在健身`
    }
}
let p1=new F("泰哥")
console.log(p1.run());

class S extends F{
    constructor(name: string){
        super(name)
    }
}
let p2=new S("小泰")
console.log(p2.run());

p1:泰哥在健身
p2:小泰在健身

TS的接口

  • 是对行为的抽象,而具体如何行动需要由类(classes)去实现(implement)
  • 在TypeScript中,我们使用接口(Interfaces)来定义对象的类型。除了可用于对类的一部分行为进行抽象以外,也常用于对「对象的形状(Shape)」进行描述
interface objectType {
    name: string;
    age: number;

}
let obj: objectType = {
    name: "高启强",
    age: 30
}
// console.log(`我叫${obj.name},今年${obj.age}`);

   我叫高启强今年30///////////////////////
   
   interface one {
    uname: string,
    ages: number,
    address: string,
 
}
    类定义会创建两个东西:类的实例类型和一个构造函数。 因为类可以创建出类型,
    所以你能够在允许使用接口的地方使用类

class two implements one {
    uname: string
    ages: number
    address: string
   constructor(uname: string,ages: number,address: string){
      this.uname = uname
      this.ages = ages
      this.address = address
   }
 
}
let three=new two('陈金默',28,"旧厂街");

TS访问修饰符

. public(默认):公认,可以在任何地方被访问

. Protected:受保护,只在当前类和其子类中被访问(在其外部不可以)

. private:私有,只在当前类里面才可以被访问(在子类中或者类的外部都无法被访问)

. readonly: 只读修饰符 只可读,不可修改

枚举

ts中枚举类型就是,枚举里面的每个数据值都可以叫做元素,每个元素都有自己的编号,编号是从0开始的,依次递增加1 语法:

// enum 枚举名 {}

例如:
enum Color{
red,           //0
green,        //1
blue          //2
      }
      

在枚举类型中,属性的位置默认是从0开始的,colorred是第一个,默认位置为0,所以依次往下排列,值分别为:red:0, green:1, blue:2

像这样的:
enum Color{
red=10,          
green,       
blue=30
cyan
      }
      
      在这里将枚举内的`blue`默认值设为`30`,如果依次排列的话,打印的就是 
      10,11,30,31