(一)typeScript数据类型

91 阅读4分钟

一.  typscript的数据类型

1.布尔类型   数据只有true  false两个值

let str:boolean = true

console.log(str)//输出true

2.数字类型 number,数据只能为数字(包含整数和小数)

let  str:number = 123

console.log(str)//输出 123

3.字符串类型string   数据只能接收字符串类型

let str:string='123'

console.log(str)//输出'123'

4.数组类型 

ts中定义数组有两种方式([]和<>),普通js数组中数据可以为任意类型,ts中规定了类型就只能是定义的类型,否则报错

<1>方式一

let  arr:string[]=["a","b","c","d"]

console.log(arr)  //输出["a","b","c","d"]

<2>方式二

let  arr:Array=["a","b","c","d"]

console.log(arr)  //输出["a","b","c","d"]

5.元组类型(tuple)   属于数组的一种,数组类型中数据只能是一种,元组中可以定义多种,但注意点是数据要和定义的类型一一对应

let   arr:[string,number,boolean] = ["ts", 123, true]

console.log(arr) //输出["ts", 123, true]

6.枚举类型(enum)  主要是用来定义标识符的

enum  枚举名{

    标识符[=整型常数],

    标识符[=整型常数],

    ...

    标识符[=整型常数]

}

例:(1)  enum  Color{ red, blue, green}

       let c:Color = enum.blue

       console.log(c)  //输出1

(2) enum Color{ red, blue = 5, green}

      let c:Color = enum.green

      console.log(c) //输出6

注意点:标识符未赋值时,默认输入下标,赋值后,则是值+1

7. any类型   就是可以是任意类型

     let   str:any = '123'

      str = 123

      str = true

此时打印str不会报错

any类型主要用于3中情况下:

(1)变量的值会动态的改变下,比如用户输入的值

let x: any = 1;    // 数字类型
x = 'I am who I am';    // 字符串类型
x = false;    // 布尔类型

(2)改写现有代码,允许在编译时刻选择性的包含或一处类型检查

let x: any = 4;
x.ifItExists();    // 正确,ifItExists方法在运行时可能存在,但这里并不会检查
x.toFixed();    // 正确

(3)存储各种类型数据的数组时

let arrayList: any[] = [1, false, 'fine'];
arrayList[1] = 100;

8.  undefined      是其他(never类型)数据类型的子类型

例:  let   str:number;

         console.log(str)//输出  undefined    但报错

         let str:undefined ;

         console.log(str)//输出 undefined 不报错,正确写法

         //定义了没赋值,默认值就是undefined

         let  str:number | undefined

         console.log(str)

9.  null 是其他(never类型)数据类型的子类型,null是一个只有一个值的特殊类型。表示一个空对象引用

        var num:null

        num = 123 //报错

        num = null   //正确

一个元素可能是number类型,也有可能是undefined类型,也有可能是null类型,可以设置多个类型

      let  str:number | nudefined | null

     num = 123

     console.log(num)//输出123

10.  void 类型  标书没有任何类型,一般用于定义方法的时候方法没有返回值,若有返回值则定义对应的类型

例:

function run():void{

    console.log('run')

}

run()//输出run

unction run():number{

  return   123

}

run()//输出123

11. never类型   是其他类型(包括null和undefined类型)的子类型,代表从不会出现的值,这意味着声明never的变量只能被never类型所赋值

例: var   a:undefined;

        a = undefined

        var b:null;

        b = null

       var    a:never

      a = 123//错误写法

     a=(()=>{

         throw new  Error('错误’)

      })()

never很少使用,可以用any代替,了解一下即可

12.Object类型

object表示非原始类型,也就是除numberstringbooleansymbolnullundefined之外的类型。

使用object类型,就可以更好的表示像Object.create这样的API。例如:

declare function create(o: object | null): void;

create({ prop: 0 }); // OK

create(null); // OK

create(42); // Error

create("string"); // Error

create(false); // Error

create(undefined); // Error

类型断言

类型断言可以手动指定一个值的类型, 即可以从一个类型变成另一个类型,有两种形式:
<类型>值         值  as  <类型>

类型推断

当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。

如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。

变量作用域

变量作用域指定了变量定义的位置。

程序中变量的可用性由变量作用域决定。

TypeScript 有以下几种作用域:

  • 全局作用域 − 全局变量定义在程序结构的外部,它可以在你代码的任何位置使用。

  • 类作用域 − 这个变量也可以称为 字段。类变量声明在一个类里头,但在类的方法外面。 该变量可以通过类的对象来访问。类变量也可以是静态的,静态的变量可以通过类名直接访问。

  • 局部作用域 − 局部变量,局部变量只能在声明它的一个代码块(如:方法)中使用。