TypeScript基础

TypeScript 详解一、TS的基础概念1. 什么是TS1.1 对比原理他是JS的一个超集,在原有的语法基础上,添加强类型并切换为基于类的面向对象语言面向项目:TS - 面向解决大型的复杂项目、架构、代码维护复杂场景JS - 脚本化语言,用于面向简单页面场景自主检测:TS - 编译时,主动发现并纠正错误JS - 运行时,执行报错类型检测TS - 强类型语言,支持动态和静态的类型检测JS - 弱类型语言,无静态类型选项运行流程sdfTS - 依赖编译,依靠编译打包实现在浏
摘要由CSDN通过智能技术生成

TypeScript 详解

一、TS的基础概念

1. 什么是TS

1.1 对比原理
  • 他是JS的一个超集,在原有的语法基础上,添加强类型并切换为基于类的面向对象语言
面向项目:

TS - 面向解决大型的复杂项目、架构、代码维护复杂场景

JS - 脚本化语言,用于面向简单页面场景

自主检测:

TS - 编译时,主动发现并纠正错误

JS - 运行时,执行报错

类型检测

TS - 强类型语言,支持动态和静态的类型检测

JS - 弱类型语言,无静态类型选项

运行流程sdf

TS - 依赖编译,依靠编译打包实现在浏览器端的运行

JS - 可直接在浏览器端运行

复杂特性

TS - 模块化、接口、泛型

1.2 安装运行
    //全局安装typescript
	npm install -g typescript
    //查看版本
    tsc -v
	//对ts文件进行编译
    tsc xxx.ts

    // 面试点:所有类型的检测和纠错 - 编译时 => 工程化

2. TS基础类型和语法

1. boolean、string、number、array、null、undefined

js与ts对比

javaScript typeScript
let isEnable = false let isEnable: boolean = false
let className = ‘zhaowa’; let className: string = ‘zhaowa’;
let classNum = 2; let classNum: number = 2;
let u = undefined; let u: undefined = undefined;
let n = null; let n: null = null;
let classArr = [‘basic’, ‘execute’]; 统一方式 let classArr: string[] = [‘basic’, ‘execute’];
let classArr = [‘basic’, ‘execute’]; <>方式 let classArr: Array = [‘basic’, ‘execute’];
2.tuple
  • 元祖:固定长度的数组
  • 在声明元组的时候一定要指定类型,如果没有指定类型,其实本质上是一个联合类型数组。
let tupleType: [string, boolean] = ['basic', false];
3. enum
  • 枚举:适合结果在多个值之间进行选择

  • 数字型枚举,默认从0开始,根据上一值依次递增

    enum Score {
         
        BAD,  // 0
        NG,   // 1
        GOOD,  // 2
        PERFECT, // 3
    }
    let score: Score = Score.BAD; //0
    
  • 字符串类型枚举

    enum Score {
         
        BAD = 'BAD',
        NG = 'NG',
        GOOD = 'GOOD',
        PERFECT = 'PERFECT',
    }
    // 反向映射
    enum Score {
         
        BAD,  // 0
        NG,   // 1
        GOOD,  // 2
        PERFECT, // 3
    }
    
    let scoreName = Score[0]; // BAD
    let scoreVale = Score["BAD"]; // 0
    
  • 异构

    enum Enum {
         
        A,        // 0
        B,        // 1
        C = 'C',
        D = 'D',
        E = 8,
        F,        // 9
    }
    
  • 面试题:异构类型每一项的枚举值 => js本质实现(手写一个异构枚举的实现)

    let Enum;
    (function (Enum) {
         
        // 正向
        Enum["A"] = 0;
        Enum["B"] = 1;
        Enum["C"] = "C";
        Enum["D"] = "D";
        Enum["E"] = 8;
        Enum["F"] = 9;
    
        // 逆向
        Enum[0] = "A";
        Enum[1] = "B";
        Enum[8] = "E";
        Enum[9] = "F";
    })(Enum || (Enum = {
         }))
    
4.any、unknown、void、never
  • any - 绕过所有类型检查 => 类型检测和编译筛查取消

    在任意值上访问任何属性和方法都是允许的。

    声明一个变量为任意值后,对它的操作,返回的内容的类型都是任意值

    变量在声明的时候,未指定其类型,那么他会被识别为任意值类型

    let anyValue: any = 123;
    
    anyValue = "anyValue";
    anyValue = false;
    let value1: boolean = anyValue;
    
  • unknown - 绕过赋值检查 => 禁止更改传递

    类型安全的any

    let unknownValue: unknown;
    
    unknownValue = true;
    unknownValue =
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨龙王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值