Typescript基础学习

97 阅读3分钟

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){

}