• Typescript中一些不理解的概念解释(泛型、断言、解构、枚举)


    新的项目想使用typescript,因此又对其概念及使用过一遍,本文主要记录下对之前一些概念不太理解的地方。

    1、泛型

    定义: 在定义函数、接口或者类的时候,不预先指定具体的类型,而是在使用的时候再指定类型。提高可重用性。

    function createArray<T>(length: number, value: T): Array<T>{
        let result: T[] = [];
        for (let i = 0; i < length; i++){
            result[i] = value
        }
        return result
    }
    console.log("数字", createArray(3, 1));
    console.log("字符串", createArray(3, 'a'));
    

    定义函数createArray它拥有泛型参数(value),用T表示;该函数同时约定返回一个T类型的数组(Array)。

    当value是数字1的时候,返回数字数组;
    当value是字符串a的时候,返回字符串数组;

    2、解构

    ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。主要是可以简化代码,更加便于理解。

    // 常用1
    // 使用
    let [a,b,c] = [1,2,3];
    // 代替
    let a = 1;
    let b = 2;
    let c = 3;
    
    // 常用2
    let obj = {a:1,b:2};
    let obj2 = {...obj}
    

    3、断言

    当TS不确定一个联合类型的变量是哪个类型的时候,只能访问此联合类型的所有类型的共有属性和方法;但有时候确实需要在不确定类型的时候就访问一个类型的属性或方法。

    function getLength(something: string | number): number{
        if((<string>something).length){
            return (<string>something).length
        }else{
            return something.toString().length
        }
    }
    

    用法1:在需要断言的变量前加上

    function getLength(something: string | number): number{
        if((something as string).length){
            return (something as string).length
        }else{
            return something.toString().length
        }
    }
    

    4、枚举

    使用枚举,可以定义一些带名字的常量。用于清晰地表达意图或创建一组有区别的用例。
    数字类型枚举:默认情况下,第一个枚举值是0,后续至依次增1

    enum Color { 
        red,
        blue,
        yellow
    }
    
    let col = Color.blue;
    alert(col);
    // 1
    

    字符串枚举:

    enum ProName {
        SUCCESS = 'ok',
        ERROR = 'error'
    }
    
    alert(ProName.ERROR);
    // "error"
    
  • 相关阅读:
    HDU 1042 N!
    linux上安装wps办公软件
    《UNIX环境高级编程》笔记--环境变量
    【StatLearn】统计学习中knn算法实验(2)
    Asp.Net验证控件浅析
    斜率小于0的连线数量-归并排序
    Printk与sched_clock_init的一点分析
    【数字图像处理】使用kmeans算法对TrueColor图片进行优化
    将 Shiro 作为应用的权限基础 三:基于注解实现的授权认证过程
    python中os/sys/platform模块区别
  • 原文地址:https://www.cnblogs.com/webhmy/p/10253533.html
Copyright © 2020-2023  润新知