目录
(1)JavaScript 与 TypeScript 的区别
42、TypeScript
TypeScript是.ts文件,与.js相似,但只是用来编写代码,运行还是在.js中(下面优势与缺点)
TypeScript 是一种由微软开发的自由开源的编程语言,他是JavaScript的一个超集,扩展了JavaScript的 语法,主要提供了类型系统和对 ES6 的支持。
TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。
(1)JavaScript 与 TypeScript 的区别
TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与
TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。
TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。
(2)优势、缺点
优点:
强大的IDE支持:体现在三个特性上:
1.类型检查,在TS中允许你为变量指定类型(js文件不会)
2.语法提示(js文件不会)
3.重构Angular2、vue3的开发语言
//分别在两个文件中
缺点:
有一定的学习成本,需要理解
接口(Interfaces)、
泛型(Generics)、
类(Classes)、
枚举类型(Enums)等前端开发可能不是很熟悉的知识点
(3)编辑器
TypeScript 最大的优势之一便是增强了编辑器和 IDE 的功能,包括代码补全、接口提示、跳转到定义、重构等。
主流的编辑器都支持 TypeScript,推荐使用 Visual Studio Code。
获取其他编辑器或 IDE 对 TypeScript 的支持:
Sublime Text
Atom
WebStorm
Vim
Emacs
Eclipse
Visual Studio 2015
Visual Studio 2013
(4)安装
npm install -g typescript
以上命令会在全局环境下安装 tsc 命令,安装完成之后,我们就可以在任何地方执行 tsc 命令了
(5)查看版本
tsc -v
(6)编译
编译一个 TypeScript 文件
tsc hello.ts
使用 TypeScript 编写的文件以 .ts 为后缀
(7)写法
使用 :(冒号) 指定变量的类型,: 的前后有没有空格都可以
也就是说 :(冒号)后面的是类型
let num:number = 15;
num(变量名):number(类型) = 15(具体值)
// 表示定义一个变量num,指定类型为number;
let str:string = 'abc';
// 表示定义一个变量str,指定类型为string;
//在.ts文件中这样写不会报错
//自动生成一个同名的.js文件
(8)为什么要用到TS
//定义一个函数计算二个数据的合计
function sum(x, y) {
if (typeof x != 'number') { //对于形参的类型要添加转换
x = parseInt(x);
}
return x + y
};
sum('1', 2); //3
//TS的方式,直接约束了类型
(9)定义
1.类型定义
let flag: boolean = false; //布尔类型
let num: number = 15; //数值类型
let str: string = 'abc'; //字符串类型
let str2: string = `hello,${str}`;
let msg: string = `hello,${str},${num}`;
let u: undefined = undefined;
let n: null = null;
(1)联合类型
表示取值可以为多种类型中的一种
let a4: string | number; //a4为多个类型
a4 = 'seven';
a4 = 7;
//提示错误(布尔类型)
function getLength(str: string | number): number { //第二个number是返回类型
return str.length; //length提示错误,为什么?
}
console.log(getLength(123));
//当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,只能访问此联合类型的所有类型里共有的属性或方法
===================================================================================
//解决
function getLength(str: string | number[]): number {
return str.length;
}
console.log(getLength([1, 2, 3]));
(2)任意类型
如果是一个普通类型,在赋值过程中改变类型是不被允许的,任意值(Any)用来表示允许赋值为任意类型
let a1: string = 'seven';
a1 = 7; //提示错误
//但如果是 any 类型,则允许被赋值为任意类型
let a2: any = 'seven';
a2 = 7;
-----------------------------------------------------------------------------------
//变量如果在声明的时候,未指