• typtScript学习笔记


    typescript是JavaScript的一个超集,添加了可选的静态类型和基于类的面向对象编程。可使用于react,angular,vue

    typescript优点:更适合大型系统,跨平台能力更强(浏览器,操作系统),可编译纯js,提供了类。模块,接口,更易于组件的创建和维护。

    环境安装

    1、安装node+npm,node自带npm,安装完node -v,npm -v检测是否安装成功。

    2、全局安装typescript,npm install typescript -g,安装好了tsc --version检测

    3、项目初始化,生成package.json, npm init

    4、初始化ts,生成tsconfig.json文件,tsc --init 。tsconfig.json文件用于配置如何编译成js文件

    5、安装types/node包,npm install @types/node --dev-save ,用于开发环境,主要用于解决模块的声明文件的问题

    6、新建你需要的文件x,写相关代码。

    7、把ts转成js文件,vscode的菜单栏,任务->运行生成任务->tsc构建tsconfig,会生成xx.js文件.

    支持的数据类型:

    1、undefined:已声明但未赋值 var age:number; console.log(age); //undifined

    2、number :既支持整型也支持浮点型 var age:number = 18; var b=1.22; NAN 非数字

    3、string:字符串 var a:string = 'hah'

    4、boolean:布尔类型只有 true/false,0不会直接转为false

    5、enum:枚举类型  enum HUMAN{man,faleman}; console.log(HUMAN.man); //1(索引) 

       enum HUMAN{man=“男人”,faleman=“女人”}; console.log(HUMAN.man); //男人(值) 

    6、any:任意类型 var t:any= 10 类型可以自动转换

    7、null:空

    8、array:数组类型

    9、void:空类型

    10、元祖类型

    函数:形参需要定义类型,返回到数据需要定义类型,?:可选的参数

    function searchWomen(age:number=18,sex?:string,...xxx:string[]):string{//参数需要添加类型,age:number=18 设置默认值,sex?:string可选传参数,:string{函数返回值的类型;...xxx:string[]不确定参数类型时使用es6解构赋值的方式传参
      return age + '岁'
    }

    类,继承,重写:

    class X {//类X
      public sex:string //公开属性
      protected name:string //限制属性
      provide age:number //私有属性
      constructor (sex:string,name:string,age:number) {
        this.sex = sex
        this.name = name
        this.age = age
      }
      pubic interest(){ //公开方法
        cosole.log('吃吃吃')
      }
      protected love(){ //限制方法
        cosole.log('爱小花')
      } 
      provite bankPsd(){ //私有方法
        cosole.log('123456')
      }  
    }
    let xiaoming:X = new X('男','小明','18')
    xiaoming.interest()//吃吃吃
    
    //类的继承,类的重写
    class Xx extends X { //extends关键字表示Xx完全继承X的属性及方法
        //Xx私有属性
        public skill:string
        constuctor(skill:string){
           this.skill = skill
        }
        //Xx私有属性
        public play(){
           console.log('打篮球')
        }
        //重写interest()
        public interest(){
            super.interest() //表示继承父类
            console.log('建立电商平台')
        }
    }

    接口:interface关键字,用于定义技术规范

    interface Husband {//定义一个接口
        sex:string
        interest:string
        maiBaoBao?:Boolean
    }
    let myhusband:Husband ={ sex:'男',interest:'看书、作家务',maiBaoBao:true}
    console.log(myhusband)

    命名空间:namespace关键字,用于模块之间合作开发,避免命名冲突

    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()//我是二师兄马德华
  • 相关阅读:
    2017.0321.数字电路与系统-触发器
    2017.0320.数字电路与系统-触发器
    2017.0319.数字电路与系统-算术逻辑单元
    2017.0317.数字电路与系统-减法器
    2017.0316.算术运算电路和ALU
    2017.0315.数字电路与系统-奇偶校验器
    2017.0313.数字电路与系统-数据选择器分配器的理解
    2017.0311.数字电路与系统-数据选择器分配器的理解
    2017.0310.数字电路与系统-数据选择器分配器的理解
    2017.0309.数字电路与系统-组合电路的模块分析
  • 原文地址:https://www.cnblogs.com/muzs/p/10506474.html
Copyright © 2020-2023  润新知