初识TypeScript -基础一

news/2024/5/20 15:47:55/文章来源:https://blog.csdn.net/Mr_Roki/article/details/131069276

前言

在开始工作之前,就听朋友提过TypeScript,之前也没多想学习,直到vue3出来之后,感觉TypeScript 后面会成为主流,只能硬着头皮学学吧。
读完本片文章,你会收获
1、TypeScript的历史及其优势
2、TypeScript和JavaScript的差别
3、TypeScript的安装及编译
4、TypeScript的基本类型

TypeScript简介

TypeScript 是由微软公司在 2012 年正式发布,现在也有 8 年的不断更新和维护。是Javascript的一个超集,其实本质上是向Javascript 添加了可选的静态类型和基于类的面向对象编程。使其具有很好的代码的可读性和可维护性,开发大型的项目。

TypeScript 与 ES5、ES2015 和 ES2016 之间的韦恩图

在这里插入图片描述

TypeScript 与 JavaScript 的对比

TypeScriptJavaScript
JavaScript 的超集用于解决大型项目的代码复杂性一种脚本语言,用于创建动态网页
可以在编译期间发现并纠正错误作为一种解释型语言,只能在运行时发现错误
强类型,支持静态和动态类型弱类型,没有静态类型选项
最终被编译成 JavaScript 代码,使浏览器可以理解可以直接在浏览器中使用
支持模块、泛型和接口不支持模块,泛型或接口
社区的支持仍在增长,已经初具规模大量的社区支持以及大量文档和解决问题的支持

TypeScript使用

通过线上环境学习

线上学习可以不用安装 typescript,而是直接使用
TypeScriptPlayground([https://www.typescriptlang.org/play]) 
来学习新的语法或新特性。通过配置 TS Config 的 Target,可以设置不同的编译目标(ES版本),从而编译生成不同的目标代码。

TypeScript的安装

安装TypeScript

1、安装命令 npm i -g typescript 
2、测试安装是否成功 tsc -v 
3、有版本信息则说明安装成功 Version 4.0.2

TypeScript编译选项

编译命令

// 编译单个文件命令
tsc a.ts
// 监控并编译单个文件命令
tsc a.ts -w
// 可以编译所有的ts文件,但是它会根据配置文件(tsconfig.json)去编译,tsconfig.json的配置将会在下一篇文章写到
tsc 
// 监控所有文件编译
tsc -w

TypeScript 工作流程

1、将ts文件跟据编译选项编译为指定版本的js
2、将js文件打包
3、部署到浏览器运行

流程图

dea0cbad55b246a8a7e65aec57273ade_tplv-k3u1fbpfcp-zoom-1

TypeScript的第一段代码(以下代码均采用的是ES2015标准编译)

TypeScript

let str:String = "hello world";
console.log(str)

javaScript

"use strict";
let str = "hello world";
console.log(str);

分析代码

1、我们发现 str 参数的类型信息在编译后被擦除了。TypeScript 只会在编译阶段对类型进行静态检查,如果发现有错误,编译时就会报错。而在运行时,编译生成的 JS 与普通的 JavaScript 文件一样,并不会进行类型检查。

2、如果你跟着敲了代码,并且有其它的思想,你会发现当你预设了一个类型给到变量,那么后期再赋值时,只能赋值相同类型的值给到这个变量。例如: str = 123;这时候编辑器会报错。因为str 的类型是String

TypeScript的数据类型(这里采用的是官网的介绍)

基础类型(部分类型用法和js类似的就不做赘述了)

布尔类型(boolean)

let isDone: boolean = false;

数字类型(number), 所有数字都是浮点数。除了支持十进制和十六进制字面量,还支持ECMAScript 2015中引入的二进制和八进制字面量。

let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;

字符串(String)

let name: string = "bob";

数组(Array),有两种方式可以定义数组

//  第一种,可以在元素类型后面接上 []
let list: number[] = [1, 2, 3];
// 第二种方式是使用数组泛型,Array<元素类型>:
let list: Array<number> = [1, 2, 3];

元组(Tuple),元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

// 定义元组的类型,第一个值是string类型,第二个值是number类型
let x: [string, number];
// 给元组正确赋值
x = ['hello', 10]; // OK
// 给元组错误赋值
x = [10, 'hello']; // Error

枚举,使用枚举类型可以为一组数值赋予友好的名字。

enum Color {Red, Green, Blue}
let c: Color = Color.Green;

Any,还不清楚的类型,可以定义为Any类型,使其通过编译

// 不会报错
let notSure: any = 4;
notSure = "maybe a string instead";

Void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时

声明一个void类型的变量没有什么大用,因为你只能为它赋予undefinednullfunction warnUser(): void {console.log("This is my warning message");
}

Null 和 Undefined

默认情况下null和undefined是所有类型的子类型。 
就是说你可以把 null和undefined赋值给number类型的变量。

Never类型表示的是那些永不存在的值的类型

1、never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型;
2、never类型是任何类型的子类型,也可以赋值给任何类型;any不可以赋值给never。
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {throw new Error(message);
}
// 推断的返回值类型为never
function fail() {return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {while (true) {}
}

对象(Object)表示非原始类型

1、就是除number,string,boolean,symbol,nullundefined之外的类型。

类型断言(类型转换)

两种形式是等价的,但当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。

“尖括号”语法

let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;

as语法

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

文章参考:憧憬在 aoppp.com发布

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python如何抓取数据

Python如何抓取数据 介绍 Python是一种功能强大的编程语言&#xff0c;它被广泛使用于网络抓取和数据分析。无论您是想要从网站上抓取数据&#xff0c;还是使用API抓取数据&#xff0c;Python都是一种非常适合的工具。在本文中&#xff0c;我们将介绍Python如何抓取数据&…

SciencePub学术 | 智能交通类重点SCIEI征稿中

SciencePub学术刊源推荐: 智能交通类SCI&EI征稿中&#xff01;进展顺利&#xff0c;录用率高&#xff0c;连续十年IF稳定上升。信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 【期刊简介】IF&#xff1a;4.0-4.5↑&#xff0c; JCR 2区&#xff0c;…

【Linux服务器编程总结】网络编程基础知识 (udp初级)

一.预备知识 1.主机字节序和网络字节序: 其实本质就是大小端。通常在网络传输的时候会将要发送的数据转同一转换成大端后再发送。在linux中提供了如下四个函数进行大小端转换。 2. 网络套接字&#xff1a; 我们在网络编程的时候会使用到socktet 套接字。对此我们需要了解so…

QT CTK插件开发(六) 多对一插件

CTK在软件的开发过程中可以很好的降低复杂性、使用 CTK Plugin Framework 提供统一的框架来进行开发增加了复用性 将同一功能打包可以提供多个应用程序使用避免重复性工作、可以进行版本控制提供了良好的版本更新迭代需求、并且支持动态热拔插 动态更新、开发更加简单快捷 方便…

chatgpt赋能python:Python如何进行算术运算

Python如何进行算术运算 Python是一种高级编程语言&#xff0c;适用于不同的应用场景&#xff0c;尤其是数据科学和机器学习。Python拥有强大的算术运算能力&#xff0c;使得它成为处理大规模计算任务的首选语言。 基本运算符 Python中的基本运算符包括加法(), 减法(-), 乘法…

chatgpt赋能python:Python如何优化SEO?

Python如何优化SEO&#xff1f; Python已经成为一种非常流行的编程语言。专业人士使用Python编写众多应用程序&#xff0c;将其应用于各种行业和领域。众所周知&#xff0c;搜索引擎是市场营销的重要组成部分。SEO是在网站和搜索引擎结果页面上提高网站排名的过程。在这个过程…

论文中文翻译——kAFL Hardware-Assisted Feedback Fuzzing for OS Kernels

本论文相关内容 论文下载地址——26th USENIX Security Symposium论文中文翻译——kAFL Hardware-Assisted Feedback Fuzzing for OS Kernels 文章目录 本论文相关内容前言kAFL&#xff1a;操作系统内核的硬件辅助反馈Fuzzing作者信息论文来源主办方信息摘要1 引言2 技术背景2…

【ArcGIS Pro二次开发】(34):从字符串中提取中文、英文、数字与特殊符号

这是一个基于字段计算的工具。 有时候我们会遇到一些混杂着各种中文、英文、数字、特殊符号的文字&#xff0c;这个工具的目的是从这些复杂文字中提取出想要的特定文字。 比如说从CAD测绘图中可以读取到类似【混3】、【砖2】的文字&#xff0c;如果想要从中提取出层数或结构&…

Agile | 聊聊敏捷开发

什么是敏捷开发 敏捷开发是一种迭代和增量的项目管理方法&#xff0c;优先考虑适应性、协作和快速交付&#xff0c;而不是遵循严格的计划[0]。它是在《敏捷软件开发宣言》和《12项原则》中表达的一组价值观和原则[1]。敏捷是基于这些价值观和原则的一组框架和实践的总称。敏捷…

C++11中条件标量和互斥锁应用出现死锁思考

条件变量和互斥锁在多线程同步过程中经常被使用&#xff0c;以下测试程序测试其使用。 目录 1.测试程序1 2.测试程序2 3.运行结果思考 1.测试程序1 #include <mutex> #include <deque> #include <iostream> #include <thread> #include <condi…

Day_43插入排序

目录 一. 关于插入排序 1. 排序的定义 2. 插入排序 二. 插入排序的实现过程 三. 代码实现过程 1. 插入排序核心代码 四. 代码展示 五. 数据测试 六. 总结 一. 关于插入排序 1. 排序的定义 排序&#xff0c;就是重新排列表中的元素&#xff0c;使表中的元素满足按关键字有序…

chatgpt赋能python:Python如何获取图片的尺寸

Python如何获取图片的尺寸 如果你在使用Python编程&#xff0c;常常需要获取图片的尺寸&#xff0c;本文将介绍如何使用Python获取图片的尺寸&#xff0c;同时还会介绍一些常用的Python库用于图像处理。 PIL库 PIL&#xff08;Python Imaging Library&#xff09;是Python中…

chatgpt赋能python:Python-如何快速高效地求两数之和

Python - 如何快速高效地求两数之和 介绍 Python 是一种高级编程语言&#xff0c;适用于各种领域的软件开发。本文将介绍使用 Python 完成两个数字之和的操作。Python 以其清晰、简洁、易于学习和使用的特性闻名于世&#xff0c;既能作为脚本语言&#xff0c;又能进行面向对象…

利用Zookeeper实现集群选举

什么是Zookeeper 分布式开源协调系统&#xff0c;数据模型简单&#xff0c;可以实现同步&#xff0c;配置管理&#xff0c;分组管理&#xff0c;分命名空间管理等。 技术本质 一个原子消息传递系统&#xff0c;它使所有服务器保持同步 FLP(3个科学家名字命名) 理论角度&…

Linux驱动开发(使用I2C总线设备驱动模型编写AT24C02驱动程序)

文章目录 前言一、I2C总线设备驱动模型二、设备树编写三、驱动程序编写1.提供i2c_driver结构体变量并且注册2.注册file_operations结构体3.操作AT24C02 四、应用程序编写五、上机测试总结 前言 本篇文章将讲解如何使用I2C总线设备驱动模型编写AT24C02驱动程序。 一、I2C总线设…

Python 类和对象

一、什么是类和对象 Python和Java一样&#xff0c;都是面向对象的编程语言&#xff0c;面向对象编程其实是一种封装代码的方法&#xff0c;把一些公共的属性或者方法封装到一个类中&#xff0c;然后再通过这个类可以创建多个对象&#xff0c;最后使用这些对象去调用这些封装起…

2023PS beta 官方注册安装教程

该教程为官方注册下载教程&#xff0c;无风险。 软件介绍 Adobe Photoshop 2023版(简称PS)是一款全球流行的专业图像处理软件及照片和设计软件。Adobe Photoshop中文版是Adobe Creative Cloud 创意云桌面程序中心的图形设计软件热门产品&#xff0c;它是平面设计领域和数字图象…

毕业2年,月薪就有30K,太卷了吧......

想起两年前交流过的一个应届生&#xff0c;当时他刚毕业技术水平不高&#xff0c;进了一个小公司做软件测试实习工作。最近联系上了&#xff0c;不问不知道&#xff0c;一问吓一跳&#xff0c;他现在已经进了某一线大厂&#xff0c;月薪30K。这位朋友其实也没比别人强多少&…

MySQL数据库从入门到精通学习第8天(表数据的查询)

表数据的查询 基本查询语句单表查询聚合函数查询多表连接查询子查询合并查询结果定义表和字段的别名使用正则表达式查询 基本查询语句 SELECT 语句非常的强大&#xff0c;是最常用的查询语句。他具有一个固定的格式&#xff0c;如下&#xff1a; SELECT 查询的内容 FROM 数据…

阿里P8大佬七天七夜制作这份自动化核心知识点,错过了就是错过了

整理了一份自动化核心知识点。覆盖了web前端基础&#xff0c;HTML标签&#xff0c;CSS样式&#xff0c;自动化测试工具&#xff0c;webdriver环境搭建&#xff0c;元素定位&#xff0c;手机操作系统&#xff0c;移动自动化测试工具&#xff0c;自动化测试的流程与分类&#xff…