zoukankan      html  css  js  c++  java
  • TypeScript(一)--基本数据类型

    typescript

    一.强类型语言&&弱类型语言:

    强类型语言:不允许该百年变量的数据类型,除非进行强制类型转换

    弱类型语言:变量可以被赋予不同的数据类型

    二.静态类型语言&&动态类型语言

    静态类型语言:在编译阶段确定所有变量的类型

    动态类型语言:再执行阶段确定所有变量的类型

    三.TypeScript基础

    1.运行环境:node,npm

    2.全局安装typescript: npm install -g typescript tsc -v检查

    3.运行:编写.ts文件,执行tsc命令编译成js代码,

    eg:

    let heroName:string = '超人';
    alert(heroName);
    
    用tsc ./xx.ts 编译成js,使用js
    

    VScode设置自动编译

    1.运行 tsc --init, 创建tsconfig.json文件

    2.修改 tsconfig.json文件,设置js文件夹:'outDir':'./js/'

    3.设置 vscode 监视任务

    3.1 变量:

    ##JS:
    let 变量名 = 值
    ## TS:
    let 变量名:变量类型 = 值
    ## ts中
    let sName:string = 'seafwg';
    dName = 520; // 报错
    

    3.2 新增类型

    3.2.1 原有类型:
    string: "", '',``;
    number,
    boolean[不能赋值0,1],
    Array[声明时指定数组中元素的类型],
      ## 方式一:
      let 数组名:类型[] = [值1, 值2];
    	let arrHeros:string[] = ['seafwg', 'assassin', 'intelwisd'];
    	## 方式二:
      let 数组名:Array<类型> = [值1,值2];
      let arrHeros:Array<string> = ['seafwg','intelwisd','assassion'];
    null,
    undefined,
    Symbol,
    Object
    
    3.2.2 新增类型:
    tuple: 元组:规定了元素数量和每个元素类型的“数组”,每个元素的类型可以不相同。
    ## eg:
    let 元组名: [类型1, 类型2, 类型3] = [值1,值2,值3];
    let tup1:[string, number, boolean] = ['seafwg',23,true];
    ## 访问元组和数组相同
    ## 特点:1.声明时指定元素个数。2.声明时指定元素类型
    
    enum: 枚举:
    ## 语法:
    enum 枚举名{
      枚举项1 = 枚举值1,
      枚举项2 = 枚举值2,
      ...
    }
    ## eg:
    enum GunType {
      M416 = 1,
      AK47 = 2,
      Goza = 3
    }
    ## 枚举项:一般用英文和数字,枚举值:用整形数字
    ## 使用默认枚举值:自动从0开始递增的数字
    enum GunType{
      M416, // 0
      AK47, // 1
      Goza  // 2
    }
    ## 使用:
    let Gun:Guntype = Guntype.AK47; // 赋值
    if(Gun == Guntype.AK47) {
      console.log(`相等———`); // 1==1
    }else {
      console.log(Gun);
    }
      
      
    any: 任意类型,一般在获取dom时使用
    我们在接收用户输入或者第三方代码库时,还不能确定会返回什么类型的值,此时也可以使用any类型
    ## eg
    let txtName:any = document.getElementById('txtN');
    never: 不存在的值的类型,常用作为抛出异常或者无限循环的函数类型
    ## eg:
    function test():never{
      while(true) {
        
      }
    }
    function test2():never{
      throw new Error(`hhh`); // 抛出异常,也没有返回值
    }
    never类型是ts中的底部类型,所有类型都是never类型的父类,never类型的值可以赋值给任意类型的变量。
    let x:never = test();
    let y:string = test();
      
    void:代表没有类型。一般用在返回值的函数
    ## 语法
    function sayHello():string{ // 声明时指定函数返回值类型
      return 'hi,你好';
    }
    let re1 = sayHello(); // 调用时必须使用变量保存结果
      
    function sayHello1(): void{  // 没有返回值
      console.log('hi,hahah');   // 无需return语句
    }
    
    3.2.3 数据类型推断

    如果变量的声明和初始化是在同一行,可以省略变量类型的声明

    let 变量名 = 值; <=> let 变量名:变量类型 = 值;
    let age = 18;
    age = 'seafwg'; // 报错,会根据初始化推断为number
    
    3.2.3 数据类型联合

    表示取值可以为多种类型的一种

    let 变量名:变量类型1 | 变量类型2 = 值;// 任意一种不会报错
    

    3.3 函数的定义

    es5:
    function run() {
      return 'run'
    }
    var run2 = function() {
      return 'run'
    }
    
    3.3.1 ts 新增返回值类型
    function fun():number{
      return 123;
    }
    var fun2 = function():number{
      return 123;
    }
    
    3.3.2 ts定义方法传参
    function getInfo(name:string,age:number):string{
      return `${name}---${age}`;
    }
    console.log(getInfo('zhangsan', 20));
    
    var getInfo = function(name:string,age:number):string{
      return xxx;
    }
    
    ## 没有返回值的方法:
    function run():void {
      xxx
    }
    
    3.3.3 方法可选参数

    es5里面放的实参和形参可以不一样,但是在ts中参数必须一样,如果不一样就需要配置可选参数。

    function getInfo(name:string,age?:number):string {
    	// age?:number:可选参数
    }
    ## 可选参数必须配置到参数的最后面
    
    3.3.4 默认参数

    es5无法设置默认参数,es6,ts中都可以设置默认参数。

    function getInfo(name:string,age:number=20):string{
      return `${name}---${age}`;
    }
    
    3.3.5 剩余参数 ...运算符接受形参接收传过来的值
    function sum(...result:number[]):number{
      var sum = 0;
      for(var i = 0;i < result.length;i++) {
        sum+=result[i];
      }
      return sum;
    }
    alert(sum(1,2,3,4,5,6));
    
    ###: 
    function sum(a:number, ...result:number[]):number{
      var sum = a;
      for(var i = 0;i < result.length;i++) {
        sum+=result[i];
      }
      return sum;
    }
    alert(sum(1,2,3,4,5,6));
    
    3.3.6 ts函数的重载

    java中方法的重载:重载指的是两个或者两个以上的同名函数,但他们的参数不一样

    typescript中的重载:通过为同一个函数提供多个函数类型定义来试一下多种功能的目的,为了兼容es5,es6重载的写法和java有区别

    es5,出现同名函数后面的会替换前面的。

    [ts的重载]

    function getInfo(name:string):string;
    function getInfo(age:number):string;
    
    function getInfo(str:any):any{
      if(typeof str==='string') {
        return `名字是:`+str;
      }else{
        return `你的年龄是:`+str;
      }
    }
    
    getInfo('zhangsan');
    getInfo(23);
    
    ## 等价于
    function getInfo(name:string):string;
    function getInfo(name:string,age:number):string;
    
    function getInfo(name:any, age?:any):any{
      if(!age) {
        return `名字是:`+name;
      }else{
        return `你的年龄是:`+age;
      }
    }
    
    getInfo('zhangsan');
    getInfo(23);
    
    3.3.7 箭头函数:

    this指向上下文,等同es6中的箭头函数

  • 相关阅读:
    微擎 关注发送推荐消息
    修改 processor.php 文件,监听用户对该应用的消息
    微擎返回图文信息
    微擎客服消息发送的函数
    mui 底部导航栏的实现
    两张表的关联查询
    微擎 截取字符串
    webStorm中NodeJs 没有智能提示
    OpenCV 实现自己的线性滤波器
    OpenCV 基本的阈值操作
  • 原文地址:https://www.cnblogs.com/intelwisd/p/12907535.html
Copyright © 2011-2022 走看看