初识TypeScript -基础一

news/2024/11/24 8:33:56/

前言

在开始工作之前,就听朋友提过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.ppmy.cn/news/253878.html

相关文章

常用通信、电源接口等接插件封装总结

本文是笔者在设计、调试电路时所遇到的一些常用的通信、电源接口等接插件的封装名称的总结&#xff08;对应实物图片都是在网上找的&#xff0c;有一些叫法可能不太一样&#xff0c;但是按下面的名字都能在购买时能够搜索到&#xff09;。 1、排针2.54、排母2.54&#xff08;另…

Firefox插件(拓展)开发

目录 0、一些概念 1、创建一个项目 2、创建内容脚本 3、将拓展临时添加到浏览器中进行测试 3-1、CtrlShiftA 或&#xff1a; 3-2、选择调试附加组件 3-3、选择临时加载附加组件 3-4、选择我们项目中的 manifest.json 文件打开 3-5、如果打开成功&#xff1a; 4、继续开…

MySQL 索引及查询优化总结

一个简单的对比测试 前面的案例中&#xff0c;c2c_zwdb.t_file_count表只有一个自增id&#xff0c;FFileName字段未加索引的sql执行情况如下&#xff1a; 在上图中&#xff0c;typeall&#xff0c;keynull&#xff0c;rows33777。该sql未使用索引&#xff0c;是一个效率非常低…

「HTML和CSS入门指南」header 标签详解

什么是 header 标签? 在 HTML 中,header 标签用于表示页面或区域的页眉部分。通常用于包含网站标题、导航菜单和其他重要元素。 header 标签的基本语法 以下是 header 标签的基本语法: <header><!-- 在这里放置您的内容 --> </header>请注意,header 标…

飞利浦净化器还能走多远

小李在重庆杨家坪商社花费5000买的飞利浦AC4374净化器&#xff0c;在指示灯变蓝的情况下&#xff0c;进入房间依然刺鼻&#xff0c;呼吸不好&#xff0c;咽部不舒服。 之后在10平左右的房间进行密闭烟雾测试&#xff0c;在开机3小时后&#xff0c;进入房间依然有很大烟味。该产…

无线吸尘器哪个好,松下吸尘器吸尘除螨一机多用

过去&#xff0c;由于技术的限制&#xff0c;消费者不得不选择有电源线的吸尘器&#xff0c;吸尘无比的麻烦。如今&#xff0c;随着技术的不断进步&#xff0c;市面上开始出现无线吸尘器&#xff0c;消费者再也不用被电源线束缚住了&#xff0c;真正想怎么吸尘就怎么吸尘。不过…

HP 滤波 (Hodrick Prescott Filter)

文章目录 目的优化函数求解python 实现 目的 HP 滤波是一种分解信号的低频趋势与高频部分的滤波方法&#xff1a; y t g t c t y_t g_t c_t yt​gt​ct​ 其中 y y y 代表原始信号&#xff0c; g t g_t gt​ 代表信号的低频趋势&#xff0c; c t c_t ct​为更高频的周期…

儿童学习台灯怎么选?南卡和飞利浦台灯对比哪款更护眼,深度对比两款护眼台灯

近些年&#xff0c;我国学生近视率增高&#xff0c;呈现出低龄化趋势&#xff0c;护眼灯成为消费者购买的首选款式&#xff0c;要怎么给家中的小朋友选择合适的学习台灯呢&#xff1f; 话不多说&#xff0c;分享心得——儿童学习护眼台灯怎么选&#xff1f; 1、光照强度 光照强…