(syntax)typescript
2022-09-01 00:00:00

typescript

  • 类型系统{ 静态类型、弱类型 }、面向对象、添加类型系统的、JS超集的扩展 适用于任何规模

数据类型(:类型)

  • 原始数据类型
    • :string let name:string = “zs” let one: “1000” | “2000”
    • :number let num:number = 1000
    • :boolean let flag:boolean = false
    • :void 空值 function getName(str:string):void{ } 没有任何类型 void 返回值为空underfined
    • never 不会出现的值
    • Symbol 独一无二的值 Symbol(“key”) 对象的键 [Symbol()]:”value” 类的属性名或方法名 class { [Symbol()](){ } c[属性]() c[Symbol()]()
    • :undefined :null let nu:null = null 、let un:undefined = undefined
    • BigInt 大整数
  • 引用数据类型
    • 数组 array :类型[ ]
      • :数据类型[] 表示法 :number[] let num:number[] = [100,200]
        • 多维数组 arrArr:arr[][] = [[],[]]
      • :Array<String> 数组泛型 Array<elemType元素类型> let arr:Array<number> = []
      • 接口表示数组 interface numArray{ [index:number]:number 索引和值都是number }
      • 数组在函数中的使用 作为参数 func(arr:string[]) 作为函数的返回值 func():string[]{ }
      • any可以插入不同类型的数组元素 let arr:any[] = [ ]
    • 元组 tuple :[ , ] 类似数组 不限制类型
      • let tup:[string,boolean,number] = [‘str’,false,1000] 类型要与赋值一一对应
      • 越界元素为联合类型
      • push pop tupe_name[3] = 100 tupe[index]
    • Map 类似对象 不限制类型
      • 键值对(任何值都可以作为一个键或者一个值)
      • new Map([["keyA","value1"],["keyB","value2"]])
      • 方法 clear set get has has delete size keys values entries set(“google”,1)
      • 迭代 for of
    • 对象 object let user: { name:string,age:number } use = { name:”zs”,age:”90” } let use:user; let { name:”zs”,age:”90” }:{ name:string,age:number };
      • function(obj: { site1:string, site2 :string })
    • 枚举 enum
      • 普通枚举 enum 数字枚举 enum xx { a=100 }字符串枚举 enum xx { a=“str” } xx.a
      • 常量枚举 const enum xx{ }
      • 外部枚举 declare xx enum{ }(声明文件)
        • 外部枚举 declare enum xx{ }
        • 外部常量枚举 declare const enum xx{ }
    • 联合类型 union types |
      • let name : string | number | boolean 取值为其中一种
      • 可以作为函数参数 func(name:number | string)
      • 联合类型数组(将数组声明为联合类型)var arr:number[]|string[];
    • 任意值(任意类型) Any:any let num:any = 100
  • var/const/let [变量名]:[类型] = 值

函数 vs 方法 类里面的是方法,类外的是函数 function 定义

  • 函数类型 参数类型 和 返回值类型 (num?:number = 1000)

    • 函数返回值类型和参数类型 function fuc(par:number,str:string):return_type{ return xxx }
    • 接口定义函数 interface fuc{ (str1:string,num1:number):boolean } 、 let myfuc = func、 myfuc = function(str1:string,num1:number){ return } \ 、interface 名 { (参数:类型):返回值类型} 接口定义的和使用的类型要对函数名赋值时要保证参数个数、参数类型、返回值类型不变
  • 函数定义

    • 函数声明 function fuc(par:number,str:string):return_type{ return xxx }
    • 函数表达式 let func = function(x:number,y:number):number{ return } 把函数赋值给变量的就是函数表达式
  • 函数参数

    • 可选参数 (last?:string) 可选参数后面不允许再出现必需参数
    • 默认参数 (str:string = “message”) (str:string ?= “message”)
    • 剩余参数 …rest 最后一个参数 不确定数量的参数
  • 函数重载 允许一个函数接受不同数量或类型的参数(参数不同)、返回类型可同可不同 重载允许接受

    • function fnc(x:number|string):number|string|void{ } 重载形式: function fuc(x:number):number function fuc(x:string):void 本质就是在多个类型中选择任意的数据类型
    • 参数类型不同、参数数量不同、参数类型顺序不同
  • 函数种类

    • 匿名函数 var res = function(a:number,b:number){ } 没有名字的函数 、带参数的匿名函数表达式和不带参数
      • 匿名自调用函数IFFE (function(){ })() / function(){} 在第一个()中 (xxx)()
    • 构造函数new Function(“参数”,参数,"函数体")
    • 递归函数 自已调用自已
    • Lambda函数(箭头函数) ( [param1, parma2,…param n] )=>statement; (str:string,num:number):number[] =>{ return xxx}

类型推论(自动转换判断类型、类型自动识别) JS => TS 方便JS文件兼容TS

  • 自动指定数据类型、没有赋值或不能推断出、都会被推断成Any类型
  • 多个类型推断会推断出联合类型 let = [100,true,”string”]: number|boolean|string;
  • 按上下文归类 通过代码上下文自动判定

类型断言 as

类型别名(重命名) type

字符串字面量类型 type

声明文件

类与接口

  • 接口

声明合并

内置对象

命名空间和模块

Iterators和Generators

上一页
2022-09-01 00:00:00
下一页