TypeScript【什么是TypeScript、安装并编译TypeScript、变量声明、原始数据类型、数组、元组、任意值】(一)-全面详解(学习总结---从入门到深化)

简介: TypeScript【什么是TypeScript、安装并编译TypeScript、变量声明、原始数据类型、数组、元组、任意值】(一)-全面详解(学习总结---从入门到深化)

什么是 TypeScript



在了解TypeScript之前,我们先来回顾一下JavaScript的知识点

function add(n,m){
  console.log(n+m)
}
add(10,20); // 30
add(10,"20") // 1020


TypeScript是由微软开发的超集JavaScript的编程语言。它是一种静态类型语言,意味着在编写代码时,你必须指定每个变量的类型,而不是在运行时动态检测它们的类型。


TypeScript为JavaScript提供了一些高级功能,如类型检查和面向对象编程,使得JavaScript开发人员能够更轻松地编写大型应用程序TypeScript代码可以通过编译器转换为JavaScript代码,这样就可以在浏览器或任何其他JavaScript运行环境中运行。它与JavaScript的兼容性非常好,因此你可以在现有的JavaScript项目中使用TypeScript,或者在新项目中从头开始使用TypeScript开发

function add(n:number,m:number){
  console.log(n+m)
}
add(10,20);
add(10,"20"); // Argument of type 'string' is not assignable to parameter of type 'number'


TypeScript与JavaScript的关系


为了更好的理解,我们可以将三者看成是包含关系


安装并编译TypeScript



我们所编写的应用程序最终是需要运行在浏览器中的,但是浏览器能识别的语言是JavaScript而非TypeScript。那么问题来了,我们编写TypeScript的代码如何运行在浏览器中呢?答案:将TypeScript编译成JavaScript代码在运行在浏览器中!


安装 TypeScript

npm install -g typescript


以上命令会在全局环境下安装 tsc 命令,安装完成之后,我们就可以在任何地方执行 tsc 命令了


检查是否安装成功: tsc -v


编译TypeScript

// hello.ts
function add(n:number,m:number){
  console.log(n+m)
}
add(10,20);


编译一个 TypeScript 文件很简单

tsc hello.ts


运行TypeScript

function sayHello(person: string) {
  return "Hello, " + person;
}
let user = "itxiaotong";
document.body.textContent = sayHello(user);
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <script src="./hello.js"></script>
</body>
</html>


变量声明



letconstJavaScript 中变量声明的两个相对较新的概念


在某些方面 let 类似于 var ,但允许用户避免用户在 JavaScript 中遇到的一些常见“陷阱”


const 是一个常量,防止变量被重新赋值


由于 TypeScriptJavaScript 的扩展,该语言自然支持 let const


Let声明


块级作用域

{
 let a = 10;
 var b = 1;
}
a // ReferenceError: a is not defined.
b // 1


块级作用域解决的最大问题就是在JavaScript中令人头疼的闭包问题!

var a = [];
for (let i = 0; i < 10; i++) {
 a[i] = function () {
  console.log(i);
 };
}
a[6](); // 6


不存在变量提升

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;


不允许重复声明

// 报错
function func() {
 let a = 10;
 let a = 1;
}


Const声明


const 声明一个只读的常量。一旦声明,常量的值就不能改变


基本用法

const PI = 3.1415;
PI // 3.1415
PI = 3;
// TypeError: Assignment to constant variable.


温馨提示

Const同样不存在变量提升与重复声明


原始数据类型



JavaScript 的类型分为两种:原始数据类型和对象类型(也就是我们平时说的基本数据类型与引用数据类型)


温馨提示

在这里 null 和 undefined 我们依然归类为特殊类型


原始数据类型包括:布尔值、数值、字符串以及 ES6 中的新类型 Symbol和 ES10 中的新类型 BigInt

接下来我们说一说原始数据类型在TypeScript中如何使用


布尔值


最基本的数据类型就是简单的 true/false 值,在 JavaScript 和 TypeScript 里叫做 boolean

let isFlag: boolean = false;


数值


和 JavaScript 一样,TypeScript 里的所有数字都是浮点数或者大整数 。 这些浮点数的类型是 number 。 除了支持十进制和十六进制字面量,TypeScript 还支持 ECMAScript 2015 中引入的二进制和八进制字面量

let age: number = 6; // 十进制
let myColor: number = 0xf00d; // 十六进制
let flag: number = 0b1010; // 二进制
let test: number = 0o744;  // 八进制


其中 0b10100o744 是 ES6 中的二进制和八进制表示法,它们会被编译为十进制数字


字符串


我们使用 string 表示文本数据类型。 和 JavaScript 一样,可以使用双引号( " )或单引号( ' )表示字符串

let myName: string = 'iwen';


你还可以使用 模版字符串

let myName: string = 'iwen';
let myAge: number = 25;
// 模板字符串
let info: string = `Hello, my name is
${myName}.I'll be ${myAge + 1} years old next month.`;


数组



TypeScript 像 JavaScript 一样可以操作数组元素。 有两种方式可以定义数组。


第一种,可以在元素类型后面接上 [] ,表示由此类型元素组成的一个数组


第二种方式是使用数组泛型, Array<元素类型>


第一种:「类型 + 方括号」表示法

let list: number[] = [1, 2, 3];


第二种:数组泛型

let list: Array<number> = [1, 2, 3];


读取数组数据


无论是那种方式,读取的方式并没有发生变化

let list: number[] = [1, 2, 3];
console.log(list[1])
for(var i =0;i<list.length;i++){
  console.log(list[i])
}


任意类型


在JavaScript中,我们习惯了数组中可以存在任何类型的数据,在 TypeScript中,依然也可以

let list: any[] = ['itxiaotong', 10, { website: 'https://itxiaotong.com' }];


元组



数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象


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


简单的例子


定义一对值分别为 string number 的元组

let info: [string, number] = ['iwen', 25]


使用元组的前提就是知道元素的数量和类型,这里顺序也是不能颠倒的

let info: [string, number] = [25,'iwen'] //报错


当访问一个已知索引的元素,会得到正确的类型

let info: [string, number] = ['iwen',25]
console.log(info[0])
console.log(info[0].substring(1))


也可以只赋值其中一项


但是当直接对元组类型的变量进行初始化或者赋值的时候,需要提供所有元组类型中指定的项

let info: [string, number]
info = ["it",30]
console.log(info[0])


越界


访问越界时,会直接报错

let info: [string, number] = ['iwen',25]
console.log(info[2]) // 报错


添加元素越界时,也会报错

let info: [string, number]
info = ["it",30,true] // 报错


任意值



有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any 类型来标记这些变量


什么是任意值类型


如果是一个普通类型,在赋值过程中改变类型是不被允许的

let age:number = 30
age = "Hello" // 报错


但如果是 any 类型,则允许被赋值为任意类型

let age:any = 30;
age = "Hello";


未声明类型的变量


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

let age; // 默认不要给初始值
age = "Hello";
age = 30;


任意类型数组


在JavaScript中,我们习惯了数组中可以存在任何类型的数据,在TypeScript中,依然也可以

let list: any[] = ['itxiaotong', 10, { website: 'https://itxiaotong.com' }];
目录
相关文章
|
2月前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
63 0
|
2月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
28天前
|
设计模式 JavaScript 安全
TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等
本文深入探讨了TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等,旨在帮助开发者在保证代码质量的同时,实现高效的性能优化,提升用户体验和项目稳定性。
42 6
|
27天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
36 2
|
1月前
|
JavaScript 安全 前端开发
TypeScript类型声明:基础与进阶
通过本文的介绍,我们详细探讨了TypeScript的基础与进阶类型声明。从基本数据类型到复杂的泛型和高级类型,TypeScript提供了丰富的工具来确保代码的类型安全和可维护性。掌握这些类型声明能够帮助开发者编写更加健壮和高效的代码,提高开发效率和代码质量。希望本文能为您在使用TypeScript时提供实用的参考和指导。
37 2
|
1月前
|
JavaScript 开发者
在 Babel 插件中使用 TypeScript 类型
【10月更文挑战第23天】可以在 Babel 插件中更有效地使用 TypeScript 类型,提高插件的开发效率和质量,减少潜在的类型错误。同时,也有助于提升代码的可理解性和可维护性,使插件的功能更易于扩展和升级。
|
2月前
|
JavaScript 前端开发
TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第11天】TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
2月前
|
JavaScript 前端开发 安全
TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第9天】TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
2月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与最佳实践
【10月更文挑战第8天】深入理解TypeScript:类型系统与最佳实践
|
2月前
|
移动开发 JavaScript 前端开发
TypeScript:数组类型&函数使用&内置对象
本文介绍了 TypeScript 中的数组类型、对象数组、二维数组、函数、函数重载、内置对象等概念,并通过代码示例详细展示了它们的使用方法。还提供了一个使用 HTML5 Canvas 实现的下雨效果的小案例。
下一篇
DataWorks