Node.js之父瑞安达尔(Ryan Dahl)发布新的开源项目 deno,从官方介绍来看,可以认为它是下一代 Node,使用 Go 语言代替 C++ 重新编写跨平台底层内核驱动,上层仍然使用 V8 引擎,最终提供一个安全的 TypeScript 运行时。
甚至Dahl在公开场合表示Node.js已经无力回天,Deno将是他的代替品。我相信前端小伙伴们一定都听说了这个消息。
Deno开始使用后用TypeScript变成了一个必会的技能,但是很多小伙伴们还不太熟悉TypeScript的用法。其实TypeScript现在用的已经很广泛了,无论你使用ng、React还是Vue都可以使用TypeScript来实现的你JavaScript代码。
TypeScript是什么?
TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,TypeScript 在 JavaScript 的基础上添加了可选的静态类型和基于类的面向对象编程。
其实TypeScript就是相当于JavaScript的增强版,但是最后运行时还要编译成JavaScript。TypeScript最大的目的是让程序员更具创造性,提高生产力,它将极大增强JavaScript编写应用的开发和调试环节,让JavaScript能够方便用于编写大型应用和进行多人协作
TypeScript和JavaScript的对比
TypeScript 与JavaScript两者的特性对比,主要表现为以下几点:
TypeScript是一个应用程序级的JavaScript开发语言。(这也表示TypeScript比较牛逼,可以开发大型应用,或者说更适合开发大型应用)
TypeScript是JavaScript的超集,可以编译成纯JavaScript。这个和我们CSS离的Less或者Sass是很像的,我们用更好的代码编写方式来进行编写,最后还是有好生成原生的JavaScript语言。
TypeScript跨浏览器、跨操作系统、跨主机、且开源。由于最后他编译成了JavaScript所以只要能运行JS的地方,都可以运行我们写的程序,设置在node.js里。
TypeScript始于JavaScript,终于JavaScript。遵循JavaScript的语法和语义,所以对于我们前端从业者来说,学习前来得心应手,并没有太大的难度。
TypeScript可以重用JavaScript代码,调用流行的JavaScript库。
TypeScript提供了类、模块和接口,更易于构建组件和维护。
仅仅是测试版,一旦上线相信是很恐怖的,让我们一起来学习TS吧
不管之后deno有什么发展,TypeScript已经支持多方运用,node vue ng react都可以使用TS,因此学习TS将很有必要
接下来我们一起来学习TypeScrpt(在此之前先安装node.js)
npm install typescript -g
小写
安装好之后输入 tsc --version(tsc -v) 查看是否出现了版本号
在写ts之前我们 进行一下package.json生成 npm init -y
生成tsconfig.json文件 tsc --init
用来之后的配置使用,可以通过读取它来设置TypeScript编译器的编译参数。
生成好之后我们安装一个插件,安装@types/node,使用npm install @types/node --dev-save
进行安装。这个主要是解决模块的声明文件问题
安装好之后可以看package是否安装上了
接下来我们编写万能的Hello World 看看环境是否完成
注意后缀是ts
小伙伴可以复制我下方的内容
var a:string = "HelloWorld"
console.log(a)
语法我们暂时先无视!!我们都知道浏览器解析编译的还是js,那ts如何转换js呢,使用命令 tsc xxx.ts
我们这里 tsc helloWodlr.ts 就会生成一个js文件,我们最终运行的还是js
如果是使用vscode编辑器的小伙伴可以使用gui操作
点击终端打开运行生成任务,然后选择tsc:构建-tsconfig.json,这时候就会生成一个helloWorld.js文件
里面的内容当然是js啦
此时我们的环境已经搭建完成,接下去我们看看实际操作
Typescript中的数据类型,相当于js多了几项类型
Undefined :
Number:数值类型;
string : 字符串类型;
Boolean: 布尔类型;
enum:枚举类型;
any : 任意类型,一个牛X的类型;
void:空类型;
Array : 数组类型;
Tuple : 元祖类型;
Null :空类型。
Undefined类型
在js中当你定义了一个变量,但没有给他赋予任何值的时候,他就是Undefined类型。这可能和你以前学的语言稍有不同,其他语言会有个类型的默认值
在ts中编写以下代码 (其实这段代码已经报错了,不过我们主要看效果,编译成js之后 我们看看效果)
var age:number
console.log(age)
这就是我们ts声明变量的正确写法,相对js可能稍微有点麻烦
var age:number =21
console.log(age)
Number类型
在TypeScript中,所有的数字都是Number类型,这不分是整数还是小数。比如下面我们声明一个年龄是18岁,身高是178.5厘米。
var age:number = 18
var stature:number = 178.5
console.log(age)
console.log(stature)
我给大家复制一下编译后的js代码
"use strict";
// var age:number =21
// console.log(age)
var age = 18;
var stature = 178.5;
console.log(age);
console.log(stature);
所以TS 相对js而且 数据类型更为严谨
在TypeScrip中有几种特殊的Number类型 我们需要额外注意一下:
NaN:它是Not a Number 的简写,意思就是不是一个数值。如果一个计算结果或者函数的返回值本应该是数值,但是由于种种原因,他不是数字。出现这种状况不会报错,而是把它的结果看成了NaN。(这就好比我们去泰国外,找了一个大长腿、瓜子脸、水蛇腰的女神。房也开好了,澡也洗完了,发现跟我们的性别统一,我们只能吃个哑巴亏,你绝不会声张)
Infinity :正无穷大。
-Infinity:负无穷大。
string类型
由单引号或者双引号括起来的一串字符就是字符串。这个跟js还是类似的
var TS:string = "typescript"
console.log(TS)
转换之后就会node运行一下就会乖乖的输出typescript
boolean布尔类型
作任何业务逻辑判断都要有布尔类型的参与,通过对与错的判断是最直观的逻辑处理。boolean类型只有两种值,true和false。
(简单的例子就不演示了,小伙伴可以自行测试一下)
var b:boolean = true
var c:boolean = false
enum 类型
这个世界有很多值是多个并且是固定的,比如:
世界上人的类型:男人、女人、中性
一年的季节:春、夏、秋、冬 ,有四个结果。
这种变量的结果是固定的几个数据时,就是我们使用枚举类型的最好时机:
我们来看看用法
enum REN{ nan , nv ,yao}
console.log(REN.yao) //返回了2,这是索引index,跟数组很像。
如果我们想给这些枚举赋值,可以直接使用=,来进行赋值。
enum REN{
nan = '男',
nv = '女',
yao= '妖'
}
console.log(REN.yao) //返回了妖 这个字
这里怕小伙伴跟js对象申明有误差,可以对比一下
var obj={
nan :'男',
nv : '女',
yao: '妖'
}
any类型
一个写惯了前端的人,有时候不自觉的就分不清类型了。这是个不好的习惯,也是前端的痛,就因为这个原因,JavaScript也多次被人诟病说大型项目不适合用JavaScript。但是习惯一旦养成,改是需要时间和磨练的。TypeScript友好的为我们提供了一种特殊的类型any,比如我们在程序中不断变化着类型,又不想让程序报错,这时候就可以使用any了。
var t:any =10
t = "typescript"
t = true
console.log(t)
这里编译了任意类型,布尔类型覆盖了字符串类型
Null类型:
与 Undefined 类似,都代表空。Null 代表是引用类型为空。意义不大,但是有用。后续学习中会使用到。
TS的特点就是数据的强类型,当然不用强类型不会报错,因为被默认为any了,所以还是建议小伙伴学会声明类型的操作
注意:剩余的数组、元组、void 我们以后再讲,慢慢来,转换有点不习惯的
网友评论