码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【TypeScript笔记】02 - TS高级类型


    文章目录

      • 导读
        • 开发环境
      • class 类
        • class 基本用法
        • class 实例属性初始化
        • 构造函数
        • 类构造函数的原理
        • 类继承 - extends
        • 类继承 - implements
        • 类成员的可见性
        • 只读修饰符 readonly
      • 类型兼容性
        • class 兼容
        • 接口 兼容
        • 函数兼容
      • 交叉类型
      • 泛型 和 keyof
        • `泛型函数`:创建、调用
        • 简化泛型函数
        • 泛型约束
        • 多个泛型类型变量 和 keyof
        • 泛型接口
        • 泛型类
        • 泛型工具类型 - Partial
        • 泛型工具类型 - Readonly
        • 泛型工具类型 - Pick
        • 泛型工具类型 - Record
      • 索引签名类型
      • 映射类型
        • 语法
        • 实战-`Partial`
      • 索引查询(访问)类型
      • 参考资料

    导读

    入门级TypeScript,《
    黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程》https://www.bilibili.com/video/BV14Z4y1u7pi

    开发环境

    版本号描述
    node -vv14.18.3
    npm -v6.14.6
    tsc -v4.7.4
    ts-node -v10.9.1

    class 类

    class 基本用法

    在这里插入图片描述

    class 实例属性初始化

    在这里插入图片描述

    构造函数

    在这里插入图片描述

    类构造函数的原理

    我们通过tsc将ts转换为js后对比结果如下:
    在这里插入图片描述
    运行结果如下:

    khzdeMacBook-Pro:foo_ts khz$ ts-node class.ts
    Person { name: 'lili', age: 18 }
    
    • 1
    • 2

    我们可以看出,类的实现其实就是将class转换为一个函数;ts中类的构造函数,就是在函数中执行构造函数中的语句。

    从运行结果中我们可以看出,类其实就是名为Person的对象。

    类继承 - extends

    在这里插入图片描述

    类继承 - implements

    在这里插入图片描述

    类成员的可见性

    • public:公开的(默认可见性)
    • protected:受保护的,仅对其声明所在类及其子类中可见。(实例对象不可见)
    • private:私有的,只在当前类中可见

    只读修饰符 readonly

    在这里插入图片描述

    类型兼容性

    class 兼容

    TS是Structural Type System(结构化类型系统),类型检测关注的是类的形状。
    在这里插入图片描述
    相对的,C#、Java等都是Nominal Type System(标明类型系统),const p: Point = new Point2D()这样的语句在C#中是会报错的。

    成员多的可以赋值给成员少的:
    在这里插入图片描述

    接口 兼容

    在这里插入图片描述

    class和interface之间也是可以兼容的
    在这里插入图片描述

    函数兼容

    ·函数兼容性比较复杂,需要考虑:

    • 参数个数
    • 参数类型
    • 返回值类型

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    交叉类型

    在这里插入图片描述

    在这里插入图片描述

    泛型 和 keyof

    在这里插入图片描述

    泛型函数:创建、调用

    在这里插入图片描述
    在这里插入图片描述

    简化泛型函数

    在这里插入图片描述
    在这里插入图片描述

    泛型约束

    在这里插入图片描述
    在这里插入图片描述

    多个泛型类型变量 和 keyof

    在这里插入图片描述
    在这里插入图片描述

    泛型接口

    在这里插入图片描述
    在这里插入图片描述

    泛型类

    在这里插入图片描述

    泛型工具类型 - Partial

    泛型工具类型 - Readonly

    在这里插入图片描述

    泛型工具类型 - Pick

    在这里插入图片描述

    泛型工具类型 - Record

    在这里插入图片描述

    索引签名类型

    在这里插入图片描述
    除此之外,上面的例子还包含了下面的约定:

    • 对象obj的值不能是非number类型的。

    在这里插入图片描述

    映射类型

    语法

    • 基于联合类型in在这里插入图片描述
    • 基于对象类型in keyof在这里插入图片描述

    实战-Partial

    在这里插入图片描述

    索引查询(访问)类型

    在这里插入图片描述

    同时查询多个索引的类型:| 和 keyof
    在这里插入图片描述

    参考资料

    • 《黑马程序员前端TypeScript教程》https://www.bilibili.com/video/BV14Z4y1u7pi
    • TypeScript 教程 https://www.runoob.com/typescript/ts-tutorial.html
  • 相关阅读:
    一次生产环境的docker MySQL故障
    通过sudo su root不需要输入root密码,只需要输入普通账号密码
    【Altium Designer-画板指南】
    Java InputStream.read()如何读取数据流字节并存储到缓冲区数组呢?
    SpringCloudGateway--Sentinel限流、熔断降级
    基于springboot实现体育场馆运营平台项目【项目源码】
    【web前端期末大作业】基于HTML+CSS+JavaScript实现代理商销售管理系统后台(8页)
    location.href&&window.open
    day11 多级缓存
    用DIV+CSS技术设计我的家乡网站(web前端网页制作课作业)南宁绿城之都
  • 原文地址:https://blog.csdn.net/kinghzking/article/details/126091941
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号