zoukankan      html  css  js  c++  java
  • TypeScript 基础类型、变量声明、函数、联合类型、接口

    一、基础类型

    1、任意类型any

    2、数字类型number

    3、字符类型string

    4、布尔类型boolean

    5、数组类型(无关键字)

      定义存储各种类型数据的数组时

    let arrayList: any[] = [1, false, 'any'];

    6、元组:元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

    let x: [string, number];
    x = ['Runoob', 1];    // 运行正常
    x = [1, 'Runoob'];    // 报错
    console.log(x[0]);    // 输出 Runoob

    7、枚举enum:枚举类型用于定义数值集合。

    enum Color {Red, Green, Blue};
    let c: Color = Color.Blue;
    console.log(c);    // 输出 2

    8、void,用于标识方法返回值的类型,表示该方法没有返回值。

    9、null,表示对象值缺失

    10、undefined,用于初始化变量为一个未定义的值

    11、never,代表不会出现的值。这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环)

    注意:

      在TypeScript中启用严格的空校验(--strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值给 void 或本身对应的类型

      可以用 | 来支持多种类型,比如:

    let x: number | null | undefined;
    x = 1; // 运行正确
    x = undefined;    // 运行正确
    x = null;    // 运行正确

    二、变量声明

    1、ts的变量命名规则:不能以数字开头,不能包含下划线_和美元符号$之外的特殊字符

    2、声明变量方式:

    var [变量名] : [类型] = 值;
    var [变量名] : [类型];
    var [变量名] = 值;
    var [变量名];

      4种方式,没有类型那么类型就是any;没有值,那么值就是undefined。

    三、函数

    1、函数返回值

    function function_name():return_type { 
        // 语句
        return value; 
    }

    2、带参数函数

    function func_name( param1 [:datatype], param2 [:datatype]) {   }

    3、带可选参数和默认参数

      在 TypeScript 函数里,如果我们定义了参数,则我们必须传入这些参数,除非将这些参数设置为可选,可选参数使用问号标识 ?

    function buildName(firstName: string, lastName: string) {
        return firstName + " " + lastName;
    }
    let result1 = buildName("Bob");                  // 错误,缺少参数
    let result2 = buildName("Bob", "Adams", "Sr.");  // 错误,参数太多了
    let result3 = buildName("Bob", "Adams");         // 正确

      将 lastName 设置为可选参数:

    function buildName(firstName: string, lastName?: string) {
        if (lastName)
            return firstName + " " + lastName;
        else
            return firstName;
    }
    let result1 = buildName("Bob");  // 正确
    let result2 = buildName("Bob", "Adams", "Sr.");  // 错误,参数太多了
    let result3 = buildName("Bob", "Adams");  // 正确

      注意:可选参数必须跟在必需参数后面。 如果上例我们想让 firstName 是可选的,lastName 必选,那么就要调整它们的位置,把 firstName 放在后面。如果都是可选参数就没关系。

      我们也可以设置参数的默认值,这样在调用函数的时候,如果不传入该参数的值,则使用默认参数,语法格式为:

    function function_name(param1[:type],param2[:type] = default_value) { }

      注意:参数不能同时设置为可选和默认

    4、剩余参数

      有一种情况,我们不知道要向函数传入多少个参数,这时候我们就可以使用剩余参数来定义。剩余参数语法允许我们将一个不确定数量的参数作为一个数组传入。

    function buildName(firstName: string, ...restOfName: string[]) {
        return firstName + " " + restOfName.join(" ");
    }
      
    let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

      函数的最后一个命名参数 restOfName 以 ... 为前缀,它将成为一个由剩余参数组成的数组,索引值从0(包括)到 restOfName.length(不包括)。

    5、函数重载

      重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。

      每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表

      比如:参数类型不同、参数数量不同、参数类型顺序不同

    四、联合类型

      联合类型(Union Types)可以通过管道 ( | ) 将变量设置多种类型,赋值时可以根据设置的类型来赋值。

      注意:只能赋值指定的类型,如果赋值其它类型就会报错。

      创建联合类型的语法格式如下:Type1|Type2|Type3

    五、接口

    1、接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。

      我们定义了一个接口 IPerson,接着定义了一个变量 customer,它的类型是 IPerson

      customer 实现了接口 IPerson 的属性和方法

    interface IPerson { 
        firstName:string, 
        lastName:string, 
        sayHi: ()=>string 
    }
    var customer:IPerson = { 
        firstName:"Tom",
        lastName:"Hanks", 
        sayHi: ():string =>{return "Hi there"} 
    } 

      联合类型和接口

    interface RunOptions { 
        program:string; 
        commandline:string[]|string|(()=>string); 
    } 

    2、接口继承

      接口继承就是说接口可以通过其他接口来扩展自己。

      Typescript 允许接口继承多个接口。

      继承使用关键字 extends。

      单接口继承语法格式:Child_interface_name extends super_interface_name

      多接口继承语法格式:Child_interface_name extends super_interface1_name, super_interface2_name,…,super_interfaceN_name

      继承的各个接口使用逗号 , 分隔

  • 相关阅读:
    react-绑定this并传参的三种方式
    CSS中使用文本阴影与元素阴影
    react-native构建基本页面2---轮播图+九宫格
    HTML 事件属性
    博客园文章版权声明(js自动生成)
    js 字符串方法 和 数组方法总览
    软工期末各类图复习笔记
    AES算法描述
    DQL查询语言-基础查询、条件查询、排序查询、多表连接查询、子查询、分页查询和联合查询
    Python-模块、包和库
  • 原文地址:https://www.cnblogs.com/goloving/p/12097361.html
Copyright © 2011-2022 走看看