typeScript的数据类型和函数

Posted web交流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typeScript的数据类型和函数相关的知识,希望对你有一定的参考价值。

typeScript的数据类型,写代码必须指定类型


// 布尔类型

// let flag = true;

// flag = 4567; //ts报错


// var flag:boolean = true; //指定类型

// flag = 123; //one.ts:8:1 - error TS2322: Type '123' is not assignable to type 'boolean'

// flag = false; //


// 数字类型

// var number:number=123;

// console.log(number)

// number = '123'//one.ts:14:1 - error TS2322: Type '"123"' is not assignable to type 'number'.

// 字符串类型

// let str1:string='123';

// console.log(str1)

// str = 123//one.ts:14:1 - error TS2322: Type '"123"' is not assignable to type 'string'.

// 数组类型(两方式)

// 1

// let numberarr:number[] = [11,22];//所有数字都是数字

// 2

// let numberarr1:Array<number> = [11,22];//所有数字都是数字


// let stringarr:string[] = ['11','22'];//所有数字都是字符串



// 元组类型

// let numberarr1:[number,string]=[123,'123'];//数字,字符串


// 枚举类型

// enum flag {//枚举赋值显示值

//     success=1,error=2

// }

// let s:flag = flag.success

// let f:flag = flag.error

// console.log(s);//1

// console.log(f);//2


// enum color { //枚举没有赋值显示下标

//     red,yellow,black

// }

// let colo:color=color.red;

// console.log(colo,'colo') //0 "colo"


// 任意类型


//  let num1:any = 123;


//   console.log(num1);

//   num1 = 'nihao';

//   console.log(num1);


// null和undefined 其他类型的子类型

// let num1:number;

// console.log(num1);//undefined  //报错


// let num1:undefined ;

// console.log(num1);//undefined //正确


// let num1:undefined | number;

// console.log(num1);//undefined //正确


// let num1:null;

// console.log(num1);  //报错


// let num1:undefined | number | null;

// num1 = 1234;

// console.log(num1); //正确


// viod类型 没有任何值 定义的方法没有还回值


// function run():void{

//     console.log(111) //111

// }

// run()


// function run():void{

//     return 1111  //直接nType '1111' is not assignable to type 'void

// }

// run()


// function run():number{

//     return 1111

// }

// console.log(run(),'run') //1111 "run"


// function run():void|number{

//     return 1111

// }

// console.log(run(),'run') //1111 "run"



// never类型  其他类型 从不会出现赋值  声明never只能被never类型复制


// let a:undefined;

// a=123 //报错

// a=null//报错

// a=undefined //ok


// let a:null;

// a=123 //报错

// a=null//ok

// a=undefined //报错


// let a:never;

// // a=123 //报错

// a=(()=>{

//     throw new Error('错误')  //抛出错误

// })()


// console.log(a,"错误")



typeScript的函数


// ts函数的定义

//函数声明 es5

// function run(){

//     return 1

// }

// var run1= function(){

//     return 1

// }


// ts定义函数


// 函数声明

// function run():string{ //必须还回string

//     return '2'

// }

//匿名 函数

// let run2 = function():string{//必须还回string

//     return '2'

// }


// ts定义方法传参

// function getInfo(name:string,age:number):string{

//     return `${name}---${age}`

// }

// getInfo('李哥','20') //错误


// getInfo('李哥',20)  //正确

// let getInfo = function(name:string,age:number):string{

//     return `${name}---${age}`

// }

// getInfo('李哥','20') //错误


// getInfo('李哥',20)  //正确



//没有返回值的方法

// function run():void{

//   console.log(111111111)

// }

// run();


// 参数的可选方式


// ts中实参跟形参必须一样,如不一样需配置可选参数


// function getInfo(name:string,age?:number):string{ //?代表可选参数可传可不传

//     if(age){

//         return `${age},hahhaha`

//     }else{

//         return `${name},hahhaha`

//     }

// }

// console.log(getInfo('李哥',2222))


// ts默认参数


// function getInfo(name:string,age:number=20):string{ //默认参数

//     if(age){

//         return `${age},hahhaha`

//     }else{

//         return `${name},hahhaha`

//     }

// }

// console.log(getInfo('李哥'))


// 剩余参数

// function sum(a:number,b:number,c:number,d:number){

//     return a+b+c+d

// }

// alert(sum(1,2,3,4))


// ...运算符

// function sum(...result:number[]):number{

//     let sum = 0;

//     result.forEach((item,index)=>{

//         sum+=item;

//     })

//     return sum

// }

// alert(sum(1,2,3,4,5))


// function sum(x:number,...result:number[]):number{

//     let sum = x;

//     result.forEach((item,index)=>{

//         sum+=item;

//     })

//     return sum

// }

// alert(sum(1,2,3,4,5))


// ts函数重载


// function css1(config:string):string;

// function css1(age:number):string;

// function css1(str:any):any{

//     if(typeof str==='string'){ //typeof

//         return '我是'+str

//     }else{

//         return 'hahahah'+str

//     }

// }

// console.log(css1(20)) //正确

// console.log(css1('lisi')) //正确

// console.log(css1(null)) //错误




// function css1(config:string):string;

// function css1(config:string,age:number):string;

// function css1(config:any,age?:any):any{

//       if(age){

//          return 'wo shi shuai ge'+age

//       }else{

//         return 'wo shi chou ba guai'+config

//       }

// };


// console.log(css1('2B')) //wo shi chou ba guai2b

// console.log(css1('2B',20)) //wo shi shuai ge20



 静态属性 静态方法  


/*


   function Person(){

       this.run1=function(){


       }

   }

   Person.name='哈哈哈';


   Person.run2=function(){  静态方法



   }

   var p=new Person();


   Person.run2(); 静态方法的调用

*/


// class Per{

//     public name:string;

//     public age:number=20;

//     //静态属性


//     static sex="男";       //static声明静态属性 方法

//     constructor(name:string) {

//             this.name=name;

//     }

//     run(){  /*实例方法*/


//         alert(`${this.name}在运动`)

//     }

//     work(){


//         alert(`${this.name}在工作`)

//     }

//     static print(){  /*静态方法  里面没法直接调用类里面的属性*/


//         alert('print方法'+Per.sex);

//     }

// }

// // var p=new Per('张三');

// // p.run();

// Per.print();

// alert(Per.sex);

//多态:父类定义一个方法不去实现,让继承它的子类去实现  每一个子类有不同的表现


多态属于继承

/*

               class Animal {

                   name:string;

                   constructor(name:string) {

                       this.name=name;

                   }

                   eat(){   //具体吃什么  不知道   ,  具体吃什么?继承它的子类去实现 ,每一个子类的表现不一样

                       console.log('吃的方法')

                   }

               }


               class Dog extends Animal{

                   constructor(name:string){

                       super(name)

                   }

                   eat(){

               

                       return this.name+'吃粮食'

                   }

               }

               class Cat extends Animal{

                   constructor(name:string){

                       super(name)

                   }

                   eat(){

                       return this.name+'吃老鼠'

                   }

               }


       */

//typescript中的抽象类:它是提供其他类继承的基类,不能直接被实例化。

//用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。

// abstract抽象方法只能放在抽象类里面

// 抽象类和抽象方法用来定义标准 。   标准:Animal 这个类要求它的子类必须包含eat方法

//标准:

// abstract class Animal{

//     public name:string;

//     constructor(name:string){


//         this.name=name;


//     }

//     abstract eat():any;  //抽象方法不包含具体实现并且必须在派生类中实现。

//     run(){


//         console.log('其他方法可以不实现')

//     }

// }

// // var a=new Animal() /*错误的写法*/

// class Dog extends Animal{

//     //抽象类的子类必须实现抽象类里面的抽象方法

//     constructor(name:any){

//         super(name)

//     }

//     eat(){


//        console.log(this.name+'吃粮食')

//     }

// }


// var d=new Dog('小花花');

// d.eat();

// class Cat extends Animal{

//    //抽象类的子类必须实现抽象类里面的抽象方法

//     constructor(name:any){

//         super(name)

//     }

//     run(){


//     }

//     eat(){

//         console.log(this.name+'吃老鼠')

//     }

// }


// var c=new Cat('小花猫');

// c.eat();


以上是关于typeScript的数据类型和函数的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript-基础

3 TypeScript 语法特性

TypeScript--泛型

TypeScript--泛型

Typescript #6 泛型

TypeScript 类型推断 - 函数的通用对象