出入typescript 笔记

typescript 的基本类型

1.number 数字类型 example:

   let val: Number = 2复制代码

2.string 字符串 example:

   let val: String = '2'复制代码

3.Boolean 布尔类型 example:

   let val: Boolean = false复制代码

4.array 数组 example:

   let val: Array <Number> = [2,3] //只能数字
   leg val: number[] = [1,2,4,5] //数组里只能是全部数字
   
   // 类数组有自己的定义方式
   let args: IArguments = arguments;复制代码

5.Boolean 元祖 example:

   let x = [String, Number]
   x = ['val', 2]
   // 按定义顺序排序复制代码

6.enum 枚举 example:

   enum val {one = 3, two, three}
   let curVal: val = val.one
   console.log(curVal)  // curVal: 3

  let val : String | null | undefined = ''
  val = 2 
  // 创建变量可以多个变量属性复制代码

注意:假设第一行代码声明了变量 num 并=设置初始值为 2。 注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。

7.interface 接口 example:

   interface Person {
       name: string;
       age: number;
       [val: string]: any
       // 可以定义左边可以设置是字符串还是数字
   }
   
   let tom: Person = {
            name: 'Tom',
            age: 25
        };

   interface Person {
            readonly name: string; // 只能创建的时候被赋值
            age?: number; // 这个字段可以没有
    }
        
   let tom: Person = {
                 name: 'Tom',
    };

    // class类中接口的使用
    interface ClockInterface {
      currentTime: Date;
    }

    class Clock implements ClockInterface {
        currentTime: Date;
        constructor(h: number, m: number) { }
    }
复制代码

typescript 的函数使用方法

 // 传入的参数也可以设置类型 
 function func(one: Number = 2, two?:string): Number {
    conosle.log(two) // 默认输出undefined
    return one + two
 }
 func(1) // Nan 

 // 添加number就必须要有返回数字,不然会报错。 如果不想返回就把number换成void
 
 //es6的解构用法
 function fun (...rest: Number[]):Number {
    return rest
 }
 
 // 函数里的断言<>val || <类型>值
 
 function getLength(something: string | number): number {
     if ((<string>something).length) { // 不确定这边的值是number还是string. <string> 确定是string就可以获取长度
         return (<string>something).length;
     } else {
         return something.toString().length;
     }
 }
 
 // 返回一个数组
 
 function argArray(...something: Number[]): Array<number> {
          return something;
  }
  
  // 传入一个 为定义的参数
  
  function argArray<T>(...something: Number[], value: T): asy{
            // value属于为定义的属性类型
            return something;
    }

    example: argArray(1,2,4,'str') 
    // value 会自动匹配成‘str’的类型复制代码

// ts的基本使用

 function Throttling(callback:()=> void, time:number):()=> void {
     let recording: number | undefined = undefined
     return function ():void {
        if(<undefined>recording)clearTimeout(recording)
         
        recording = setTimeout(() => {
            callback()
        },time)
     
    }

}复制代码

用ts写了一个终结者模式

interface parameter {
    name: string;
    backCall?: () => {};
}
let observer = (function(){
    let obj = {}
    return {
        add(parameter): void {
            let val: Array<any> | undefined = obj[parameter.name]
            if(<Array<any>>val){
                val.push(parameter.backCall)
            }else{
                obj[parameter.name] = []
                obj[parameter.name].push(parameter.backCall)
            }
            // <Array<any>>val ? obj[parameter.name].push(parameter.backCall) : obj[parameter.name] = [], obj[parameter.name].push(parameter.backCall)
        },
        run(runComman:string): void{
            let val: Array<any> | undefined = obj[runComman]
            if(<Array<any>>val){
                for(let key of val){
                    key()
                }
            }

        }
    }
})()复制代码


转载于:https://juejin.im/post/5c7f70e0e51d4542176d0c5a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值