TS学习笔记

一、TS运行环境搭建

1、安装

安装命令

npm i -g typescript

第一步:新建index.html和demo.ts

第二步:在index.html引入demo.ts文件

第三步:运行TS的命令

tsc demo.ts

注意:运行命令后,会将ts文件转换成js文件

如果想要实时转换运行命令

tsc demo.ts -w

 

2、配置文件 

第一步:安装命令

tsc --init

注意:运行命令后,将生成tsconfig.json文件 

二、类型声明空间与变量声明空间

1、类型声明空间

2、变量声明空间 

注意: 类型声明空间与变量声明空间不可以互相赋值,下面例子是错误的。

注意:class类,它即是类型声明空间也是变量声明空间,所以它可以赋值给他们;

三、类型注解与类型推断

那么TS是如何把两个空间联系到一起的呢? 

 

 注意:类型推断就是,TS自动推断类型的过程。TS就算没有指定类型也不可以不同类型的变量之间进行赋值。

四、类型分类与联合类型与交叉类型

1、联合类型

注意:类型之间进行或的操作

2、 交叉类型

注意:类型之间进行与的操作

五、类型断言与非空断言

1、类型断言:as

注意:类型断言主要用于TS推断出来的类型并不满足你的需求,你需要手动指定一个类型。

 

 2、非空断言:!

六、数组类型与元祖类型

 1、数组类型

 2、元祖类型

注意:元祖类型允许一个已知元素的数量 和类型的数组,各元素的类型不必相同。

七、对象类型与索引签名

 1、对象类型

基本用法,对象值与定义的类型保持一致。 

 用?的方式,表示内容可选

2、 索引签名

注意:用索引签名的方式,处理多出来的数据,不报错

对象写法: 

 

数组写法:

八、函数类型与void类型

1、TS中要求,实参的个数与形参的个数必须相同

 

 2、定义函数返回值的类型

3、函数表达式

写法1: 

 

写法2:类型注解

 

4.void类型,表示函数没有任何返回值的类型

注意:void类型有3种写法,第一是什么都不写,第二是只写一个return,第三是return undefined

 

九、函数重载与可调用注解

 注意:函数重载是指函数约束传入不同的参数,返回不同类型的数据,而且可以清晰的知道传入不同的参数得到不同的结果。

1、函数重载

例子1:

例子2:

2、可调用注解

例子1:

例子2:针对函数重载进行类型注解

例子3:

十、枚举类型与const枚举

注意:枚举是组织收集有关集合的一种方式,使代码更加易于阅读.枚举具备特性:1.自动累加、2.反向映射、3.类型方式、4.const枚举

例子1:简单枚举

 1、自动累加

 2、反向映射

注意:只有值为数字时,才能反向和累加。

十一、接口与类型别名之间的区别

注意:接口是一系列抽象方法的声明,是一些方法特征集合。简单说,接口的作用就是为这些类型命名和为你的代码或是第三方代码定义契约。

 1、接口interface

接口的基本应用

例子1:

例子2: 

例子3:

2、接口interface和类型别名的区别type 

1.写法不同

 

2.接口具备合并功能,type不具备

 

3.接口具备继承能力,type不具备

 

4、type具备映射类型,interface不具备

十二、字面量类型和keyof关键字

 注意:在TS中可以把字面量作为具体的类型来使用,当使用字面量作为具体类型时,该类型的取值就必须是该字面量的值。

例子1:

例子2:

 

 将interface变成字面量类型

例子3:

十三、类型保护与自定义类型保护

注意: 类型保护允许你使用更小的范围下的对象类型

1、typeof

2、in

 

3、instanceof

4、字面量

 

4、自定义类型保护is

 

十四、定义泛型和泛型常见操作

注意:泛型是指在定义函数、接口或类时,未指定其参数类型,只有在运行时传入才能确定。

1、基本用法

2、泛型默认值

 

3、数组泛型

 

4、函数泛型

 

5、函数与接口结合

 

例子:

6、泛型类用法

7、继承中写泛型

8、泛型约束

 

十五、映射类型与内置工具类型

注意:映射类型只能用别名实现,不能用接口来实现

1、只读Readonly

2、可选的Partial

 

3、 筛选出Pick

4、修改类型Record

5、从可选项变成必选项RequiredÏ

 

 5、排除掉某一项Omit

 

十六、条件类型和infer关键字

注意:条件类型就是在初始状态并不直接确定具体类型,而是通过一定的类型运算得到最终的变量类型。

1、排除类型 Exclude

2、 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/7098.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu 22.04 server 安装 和 初始化 LTS

ubuntu 22.04 server 安装 和 初始化 下载地址 https://releases.ubuntu.com/jammy/ 使用的镜像是 ubuntu-22.04.5-live-server-amd64.iso usb 启动盘制作工具 https://rufus.ie/zh/ rufus-4.6p.exe 需要主板 支持 UEFI 启动 Ubuntu22.04.4-server安装 流程 https://b…

Python接口自动化测试实战

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 接口自动化测试是指通过编写程序来模拟用户的行为,对接口进行自动化测试。Python是一种流行的编程语言,它在接口自动化测试中得到了广泛…

day01 - web开发简介

本课程涉及到的技术: Vue ElementUI/Html Js SpringBoot–Spring SpringMvc MyBatis(Plus) SSM Axios 学习路径: 前端主要: Html5css3JavaScript(JQuery)–>Vue(Node.js也可以学习一 下,服务端js)ElementUi(uni-app) 后端主要…

qt QMessageBox详解

1、概述 QMessageBox是Qt库中的一个类,它用于在图形用户界面(GUI)程序中显示消息框。消息框是一种用于向用户显示信息、警告、错误或询问用户确认的对话框。QMessageBox可以显示文本、图标和按钮,并允许自定义按钮的文本和功能。…

简易版 python调用cuda方法

目标: 手写一些cuda库, 使用python调用这些库 (Linux) 步骤一: 在linux上安装pybind11 方法1: sudo apt-get install python3-pybind11 方法2: git clone https://github.com/pybind/pybind11.git, 如果将其放在项目目录下的话可以不编译 步骤二: 编写CUDA代码 示例: gpu_l…

51单片机学习心得2(基于STC89C52):串口通信(UART)

串口通信(UART) 电平标准 (注意:单片机中常使用TTL电平) 上图中第一种与第二种电平传输信号有效距离只有十几米,距离超出后会传输数据错误;但是第三种电平传输的有效距离可达上千米。 常用通信…

gitlab-runner中搭建nvm、nrm以及优化maven打包

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 gitlab-runner中搭建nvm、nrm以及优化maven打包 git、gitlab-runner如何以gitlab-runner执行nvm、…

一文读懂:AIOps 从自动化运维到智能化运维

今天跟大家聊一聊AIOps(人工智能运维) 为了应对企业面临着日益复杂的运营挑战,AIOps(人工智能运维)作为一种创新的方法应运而生,结合了人工智能和机器学习技术,来提升IT运营的效率和性能。 这…

Java反射

动态代理 java.lang.reflect.Proxy:提供了为对象产生代理的方法&#xff1a; public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h) loader&#xff1a;指定用哪个类加载器&#xff0c;去加载生成的代理类。interfa…

废弃物分类分割系统:入门训练营

废弃物分类分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DCNV2-Dynamic&#xff06;yolov8-seg-C2f-DWR等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glob…

策划方案思路大公开,让你的创意更有市场!

各位营销界的脑洞大开者们&#xff0c;是不是又在为如何让你的创意在市场上大放异彩而绞尽脑汁&#xff1f; 别担心&#xff0c;今天我就来给你揭秘几个策划方案的新思路&#xff0c;让你的创意不仅有料&#xff0c;还有市场&#xff01; 一、紧跟热点&#xff0c;借势营销 …

软件著作权申请教程(超详细)(2024新版)软著申请

目录 一、注册账号与实名登记 二、材料准备 三、申请步骤 1.办理身份 2.软件申请信息 3.软件开发信息 4.软件功能与特点 5.填报完成 一、注册账号与实名登记 首先我们需要在官网里面注册一个账号&#xff0c;并且完成实名认证&#xff0c;一般是注册【个人】的身份。中…

L1G3000 提示工程(Prompt Engineering)

什么是Prompt(提示词)? Prompt是一种灵活、多样化的输入方式&#xff0c;可以用于指导大语言模型生成各种类型的内容。什么是提示工程? 提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。 六大基本原则: 指令要清晰提供参考内容复杂的任务拆…

【Windows】X-DOC:无需NAS使用Windows也能安装Jellyfin玩私人影音媒体平台

【Windows】X-DOC&#xff1a;无需NAS使用Windows也能安装Jellyfin玩私人影音媒体平台 1、前言2、Jellyfin服务搭建2.1 Jellyfin简介2.2 Jellyfin下载2.3 Jellyfin安装2.4 Jellyfin设置2.5 Jellyfin使用 3、终端访问3.1 浏览器访问 4、内网穿透 1、前言 下载收藏高清电影、电视…

基于C语言实现的图书管理系统

使用Visual Studio 2022编译工具进行编写代码的。 项目源码直接奉上: book1.h头文件: #ifndef __BOOK1_H //预处理用于条件编译 避免头文件反复包含 #define __BOOK1_H#include<stdio.h> #include <string.h> #include<stdlib.h> #include<stdbool.h&g…

<项目代码>YOLOv8 煤矸石识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

[C++] cpphttplib使用https而不是http

前言 首先我们假设是直接使用 httplib.h 的源文件。 支持 https 根据readme来看&#xff0c;需要开启一个宏&#xff0c;链接libssl和libcrypto就可以了。 下载openssl 保姆级OpenSSL下载及安装教程 选择非light的版本&#xff0c;这样才会有头文件和lib库引入文件。 编写C…

基于STM32的太阳跟踪系统设计

引言 本项目基于STM32微控制器设计了一个智能太阳跟踪系统&#xff0c;通过集成光敏传感器模块和电机控制系统&#xff0c;实现太阳能电池板的自动调节&#xff0c;以保持太阳能电池板始终垂直对准太阳&#xff0c;从而最大化光能的吸收效率。该系统通过实时监测太阳光的方向&…

一:Linux学习笔记(第一阶段)-- 安装软件 vmware workstation 虚拟机软件 centos系统

目录 学习计划&#xff1a; 资源准备 虚拟机软件&#xff1a;就别自己找了 现在换网站了 下载比较费劲 Centos8&#xff1a; 阿里云镜像地址下载&#xff08;下载比较版 但是有不同版本&#xff09;&#xff1a;centos安装包下载_开源镜像站-阿里云 百度网盘地址&#xff…

代码随想录-字符串-实现strStr()--KMP

题目描述 思路:典型的数据结构中的KMP算法实现 代码与解析 假设两个字符串长度分别为m和n&#xff0c;暴力解则为O(m*n) 引入KMP算法降低时间复杂度&#xff0c;求next数组是O(m) 遍历匹配串是O(n) KMP关键思路 ①求出模式串的next数组&#xff0c;即最长公共前后缀的长度…