Typescript
01
一、Typescript介绍
1、Typesript是javascript的超集,遵循最新的ES5、ES6规范。typescripe扩展了javascript的语法。
2、typescript更像后端的java这样的面向对象的语言,可以让js开发大型的企业项目。
3、谷歌也在大力支持typescript的推广,谷歌的angular2.x+就是基于typescript语法。
4、最新的vue、react也可以集成TypeScript.
5、Nodejs框架Nestjs中用的就是typeScript语法。
二、Typescript安装 编译
安装 npm install -g typescript
运行 tsc helloworld.ts
Typescript 开发工具 Vscode自动编译.ts文件
Typescript 中的数据类型 布尔类型(boolean)数字类型(number)字符串类型(string) 数组类型(array) 元组类型(tuple)枚举类型(enum)
1、布尔类型 以前 var a = “str” a =12 a=true 现在 为了更规范,更有利于维护不允许那样写,定义变量时指定类型 var flag:boolean=true flag=”jk” (报错)flag=true (对)
2、数字类型(number)var a:number=123 a=”dk” (报错) a= 14对
3、字符串类型(string) 只接受定义的类型
4、数组类型 ts中定义数组有两种形式
l Es5 var arr=[1,”1454”,fslse]
l ts中第一种定义数组的方式 let arr:number[]=[1,2,35] let arr:string[]=[“hjh”,”hh”]
l ts中第二种定义数组的方式 (泛型) let arr:Array=[11,12] let arr:Array=[“jkjd”,”jkj”]
5、 元组类型(tuple)ts中,元组类型属于数组的一种,可以指定数组里面值的类型
let arr:[string,number,boolean]=[“ts”,3.18,true]
6、枚举类型(enum)主要用来定义标识符
enum flag{success=1,error=-1}
let f:flag=flag.success
consloe.log(f)
如果不赋值,输出索引
enum flag{success,error}
let f:flag=flag.success
consloe.log(f) //0
以上一个为
如果不赋值,输出索引
enum flag{success,error=5,c}
let f:flag=flag.c
consloe.log(f) //6
7、任意类型(any) 和es5中没有指定类型比较相似
let a:number=123
a = “dsd” //报错
let a:any=123
a = true //正确
8、null和undefined 其他(never类型)数据类型的子类型
let num:number;
console.log(num) //定义了未赋值 ,报错
let num:undefined;
console.log(num) //undefined可运行
定义没有赋值就是undefined,不报错写法
let num:number| undefined;
console.log(num)
null
Let num : null;
num = 123 //报错
num = null //对
一个元素可能是空可能是undefined,可能是null写法
let num:number| undefined | null;
console.log(num)
9、void类型,ts中void表示没有任何类型,一般用于定义方法的时候方法没有返回值
es5定义方法:
function run() {
console.log(‘run’)
}
run()
Ts:
function run():void {
console.log(‘run’)
}
run() //表示没有任何返回值
10、never类型(包括null和undefined)的子类型,代表从不会出现的值
A=(()=>{
throw new Error(‘错误’);
})()
三、
Es5中函数的定义
//函数声明法
function run() {
Return ‘run’;
}
//匿名函数
var run2 = function() {
Return ‘run2’
}
Ts与es5的区别是ts中的函数返回值和参数都要指定类型
function run():number {
Return ‘run’;
}
//匿名函数
var run2 = function():number {
Return ‘run2’
}
传参
function run(name:string,age:number ):string{
Return ‘dd’;
}
run(‘zhangsan’,20)
//传参不对会报错
3、方法可选参数,es5中方法的实参和形参可以不一样,但是ts中必须一样,如果不一样就必须配置可选参数’
function run(name:string,age?:number ):string{
Return ‘dd’;
}
run(‘zhangsan’,20)
age可传可不传
4、ts中的默认参数
function run(name:string,age=20:number ):string{
Return ‘dd’;
}
run(‘zhangsan’)
5、ts中的剩余参数
function run(...result:number []):string{
Return ‘dd’;
}
run(14,25,58,9,89)
function run(a:number,b:number,...result:number []):string{
Return ‘dd’;
}
run(14,25,58,9,89)
6、ts函数的重载
//es5中出现同名方法,下面的会覆盖上面的方法
function run(a){
}
function run(a,b){
}