zoukankan      html  css  js  c++  java
  • typeScript

    安装

    正常    npm install typescript -g

    安装成功以后执行   tsc --version 出现版本号代表ts安装成功

    代码写完以后,执行  tsc (当前文件名)

    编译完成以后,执行 node (编译文件名)   查看结果

    正常的类型定义

    var a:string  = 'HelloWorld'
    let b:any;
     
    enum 类型 枚举类型
     
    enum REN{nan,nv,yao}
    
    console.log(REN.yao) // 2
    
    
    enum REN{nan='男人',nv='女人',yao='人妖'}
    
    console.log(REN.yao) // '人妖'

    普通函数

    function searchPerson(age:number):string{
      return `我是一个${age}岁的小姐姐`;
    }
    
    let age:number = 18;
    let result:string = searchPerson(age);
    
    console.log(result);  // 我是一个18岁的小姐姐
     
    有可选参数的函数
     
    function searchPerson(age:number,stature?:string):string{
      let yy:string = '';
      yy = `我是一个${age}岁的小姐姐`;
      if(stature!==undefined){
        yy+=`,我的身材${stature}`;
      }
      return yy;
    }
    
    var result:string = searchPerson(18);
    console.log(result);//我是一个18岁的小姐姐
    
    
    var result:string = searchPerson(18,'大长腿');
    console.log(result);//我是一个18岁的小姐姐,我的身材大长腿
    参数有默认值的函数
     
    function searchPerson(age:number = 18,stature:string = '水蛇腰'):string{
      return `我是一个${age}岁的小姐姐,我的身材${stature}`;
    }
    
    var result1:string = searchPerson(28,'大长腿');
    console.log(result1);// 我是一个28岁的小姐姐,我的身材大长腿
    
    
    var result:string = searchPerson();
    console.log(result);// 我是一个18岁的小姐姐,我的身材水蛇腰
    有剩余参数的函数
     
    function searchPerson(...xuqiu:string[]):string{
      let yy = '我是一个';
      for(let i = 0; i < xuqiu.length; i++){
        yy += xuqiu[i];
        if(i<xuqiu.length-1){
          yy+='、';
        }
      }
      yy+='的小姐姐';
      return yy;
    }
    
    var result1:string = searchPerson('28岁','大长腿','水蛇腰');
    console.log(result1);// 我是一个28岁、大长腿、水蛇腰的小姐姐
    三种函数定义方式
     
    // 函数声明法
    function add(n1:number,n2:number):number{
      return n1+n2
    }
    // 函数表达式法
    var add1 = function(n1:number,n2:number):number{
      return n1+n2
    }
    // 箭头函数
    var add2 = (n1:number,n2:number):number=>{
      return n1+n2
    }
     
    复杂类型变量的声明
     
    // 数组的声明,ts中数组的声明是单一类型,即每个数组中内部的元素是一种类型
    let arr1:number[]     //声明一个数值类型的数组
    let arr2:Array<string>  //声明一个字符串类型的数组
    let arr3:Array<boolean>  //声明一个布尔值类型的数组
    
    
    // 字面量赋值法
    let arr4:number[] = []
    let arr5:number[] = [1,2]
    let arr6:Array<string> = ['132','黑色']
    let arr7:Array<boolean> = [true,false]
    // 构造函数赋值法
    let arr8:number[] = new Array()
    let arr9:number[] = new Array(1,2)
    let arr10:Array<string> = new Array('132','黑色')
    let arr11:Array<boolean> = new Array(true,false)
    元组

    元组的长度,以及每个值的类型都是写死的,一般没必要使用

    let x:[string,number]
    
    x = ['hello',10]
    字符串的两种声明方式
    let zcg:string = '12314';
    let zcg1:String = new String('1234')
    
    console.log(zcg)//'12314'
    console.log(zcg1)//[String: '1234']
    日期类型Date
     
    let d:Date = new Date()
    console.log(d)//2020-12-01T06:48:32.105Z
    正则表达式
     
    // 构造函数声明法
    let reg1:RegExp = new RegExp("jspang")
    let reg2:RegExp = new RegExp("jspang",'gi')
    console.log(reg1) // /jspang/
    console.log(reg2) // /jspang/gi
    // 字面量声明法
    let reg3:RegExp = /jspang/
    let reg4:RegExp = /jspang/gi
    console.log(reg3)  // /jspang/
    console.log(reg4)  // /jspang/gi
    类的声明和使用
     
    class XiaoJieJie{
      name:string;
      age:number;
      constructor(name:string,age:number){
        this.name = name
        this.age = age 
      }
      say(){
        console.log('小哥哥好')
      }
    }
    let jiejie:XiaoJieJie = new XiaoJieJie('范冰冰',18)
    console.log(jiejie)  // XiaoJieJie { name: '范冰冰', age: 18 }
    jiejie.say()  // 小哥哥好
    类内访问修饰符
     
    1.  public:公有修饰符,可以在类内或者类外使用public修饰的属性或者行为,默认修饰符。
    2.  protected:受保护的修饰符,可以本类和子类中使用protected修饰的属性和行为。
    3.  private : 私有修饰符,只可以在类内使用private修饰的属性和行为。
     1 class XiaoJieJie2{
     2   public sex:string
     3   protected name:string
     4   private age:number
     5   public constructor(sex:string,name:string,age:number){
     6     this.sex=sex
     7     this.name=name
     8     this.age=age
     9   }
    10   public sayHello(){
    11     console.log('小哥哥好')
    12   }
    13 
    14   protected sayLove(){
    15     console.log('我爱你')
    16   }
    17 }
    18 
    19 var jiejie2:XiaoJieJie2 = new XiaoJieJie2('女','热巴',22)
    20 
    21 console.log(jiejie2.sex)    // '女'
    22 console.log(jiejie2.name)   //编译报错
    23 console.log(jiejie2.age)    //编译报错
    24 jiejie2.sayHello()    // '热巴'
    25 jiejie2.sayLove()    //编译报错    

      readonly:将属性设置为只读,只读属性必须在生命时或者构造函数里被初始化

    class Man{
      public readonly sex:string = '男'
    }
    
    var man:Man = new Man()
    man.sex='女'    // 编译报错
    console.log(man.sex)  // '女'(虽然报错依旧成功赋值)
    类的继承
    class Jspang{
      public name:string
      public age : number
      public skill: string
      constructor(name:string,age:number,skill:string){
        this.name = name
        this.age = age
        this.skill = skill
      }
      public interest(){
        console.log('小姐姐')
      }
    }
    
    // 类的继承
    class JsShuai extends Jspang{
      public xingxiang:string = '帅气'
      public zhuangQian(){
        console.log('一天赚了一个亿')
      }
    }// 类方法的重写
    class JsShuai1 extends Jspang{
      public xingxiang:string = '帅气'
      public interest(){
        super.interest()
        console.log('建立电商平台')
      }
      public zhuangQian(){
        console.log('一天赚了一个亿')
      }
    }
    接口
     
    //  接口定义使用interface接口
    
    interface Husband {
      sex:string
      interest:string
    }
    let myhusband:Husband ={ sex:'男',interest:'看书、做家务'}
    console.log(myhusband) // { sex: '男', interest: '看书、作家务' }
    
    // 可选参数的接口
    interface Husband1 {
      sex:string
      interest:string
      maiBaoBao?:Boolean
    }
    let myhusband1:Husband1 ={ sex:'男',interest:'看书、做家务',maiBaoBao:true}
    console.log(myhusband) // { sex: '男', interest: '看书、作家务' }
    
    // 规范函数类型接口
    interface  SearchMan{
      (source:string,subString:string):boolean
    }
    
    let mySearch:SearchMan
    
    mySearch = function(source:string,subString:string):boolean{
      let flag =source.search(subString)
      return (flag != -1)
    } 
    
    console.log(mySearch('高、富、帅、德','胖')) //false
    命名空间的使用
     
    namespace shuaiGe{
      export class Dehua{
          public name:string = '刘德华'
          talk(){
              console.log('我是帅哥刘德华')
          }
      }
    }
    
    namespace bajie{
      export class Dehua{
          public name:string = '马德华'
          talk(){
              console.log('我是二师兄马德华')
          }
      }
    }
    
    let dehua1:shuaiGe.Dehua   = new shuaiGe.Dehua()
    let dehua2:shuaiGe.Dehua   = new bajie.Dehua()
    dehua1.talk()  // 我是帅哥刘德华
    dehua2.talk()  // 我是二师兄马德华
    感谢大佬技术胖的免费学习讲解视频,地址:https://jspang.com/detailed?id=38
     
  • 相关阅读:
    Oracle 表空间查询
    FlaskAppBuilder 中文文档 markdown格式
    Springboot + Stomp + React 实现通过前后端通信
    Jmeter自动生成UUID
    Jmeter响应断言中,中文匹配失败问题解决
    IOS使用纯代码布局替换掉默认的storyboard
    MySQL在Windows上创建服务和删除服务
    IOS15上纯代码布局之导航控制器的导航条为透明的问题
    PHP编译FTP扩展
    ansible处理一些逻辑请求思路
  • 原文地址:https://www.cnblogs.com/zchenguang/p/14068317.html
Copyright © 2011-2022 走看看