zoukankan      html  css  js  c++  java
  • TypeScript学习笔记 (一)基础特性

     一. 字符串新特性

     1. 多行字符串

      var str = ``; 

     2. 字符串模板

      

    var world = "world";
    var str = `hello ${world}`;

     3. 自动拆分字符串

      

    var myName:string = 'ts';
    var myAge:number = 18;
    var test = function(temp, name:string, age:number){
      console.log(temp);
      console.log(name);
      console.log(age);
    };
    test`My name is ${myName}, and i'm ${myAge} years old`;

     二、类型

    1. 变量类型

    var a: string = "";
    var b: number = 1;
    var c: boolean = true;
    var d: any;
    function test(name:string): void {
    
    }

    2. 可选参数和默认参数

    function test(a:string, b?: number, c: number = 23){
          console.log(a);
          console.log(b);
          console.log(c);
    }    
    
    test("jojo");

     

    三、函数新特性

    1. Rest and Spread 操作符

      用来声明任意数量的参数

    // 函数定义是运用
    function
    func1(...args){ args.forEach(function(arg){ console.log(arg); }); }; func1(1,2,3); func1(1,2,3,4,5,6);
    
    
    // 函数调用时运用
    function
    func2(a,b,c){ console.log(a); console.log(b); console.log(c); } var args1 = [1,2]; func2(...args1); var args2 = [4,5,6,7,8,9]; func2(...args2);

    2. generator函数

      控制函数的执行过程,手工暂停和恢复代码执行

    function* doSth(){
        console.log("start");              
        yield;
        console.log("finish");
    }
    var func1 = doSth();
    
    func1.next();
    func1.next();

      

    function* getStockPrice(stock){
          while(true){
                yield Math.random()*100;  
        }  
    };
    
    var priceGenerator = getStockPrice("IBM");
    var limitPrice = 12;
    var price = 100;
    while(price > limitPrice){
        price = priceGenerator.next().value;
        console.log(`the generator return ${price)`);
    };

    console.log(`buy at ${price}`);

     3. 析构表达式

      通过表达式将对象或数组拆解成任意数量的变量

    function getStock(){
        return {
            code: "IBM",
            price: {
                price1: 100,
                price2: 200
            },
            aaa: "xixi",
            bbb: "haha"
        }
    }
    
    // js
    var stock = getStock();
    var code = stock.code;
    var price = stock.price;
    
    // ts
    var {code: codeAlias, price, price:{price2}} = getStock(); // 花括号中的变量要和方法中变量名字对应, codeAlias为别名
    
    console.log(codeAlias);
    console.log(price);
    console.log(price2);
    
    

    var array1 = [1,2,3,4,5,6,7];
    
    var [,,number3,number4,...others] = array1;
    console.log(number3);
    console.log(number4);
    console.log(others);
    var array1 = [1,2,3,4,5,6,7];
    
    function doSth([,,number3,number4,...others]){
        console.log(number3);
        console.log(number4);
        console.log(others);
    };
    
    doSth(array1);

    四、表达式和循环

    1. 箭头表达式

      用来声明匿名函数,消除传统匿名函数的this指针问题

    // 单行
    var sum = (arg1, arg2) => arg1 + arg2;   
    // 多行
    var sum1 = (arg1, arg2) => {        
        return arg1 + arg2;
    };
    // 无参数
    var sum2 = () => {
         console.log("无参数箭头表达式");
    };
    // 单个参数
    var sum3 = arg1 => {
         console.log(arg1);
    };
    console.log(sum(1,2));
    console.log(sum1(1,2));
    console.log(sum2());
    console.log(sum3(2));
    
    var myArray = [1,2,3,4,5,6,7,8];
    console.log(myArray.filter(value=>value%2 == 0));

    function getStock(name:string){
        this.name = name;
        
        setInterval(function(){
            console.log("name is " + this.name);
        },1000);
    
        setInterval(()=>{
            console.log("name is " + this.name);
        }, 2000);
    };
    
    var stock = new getStock("jojo");

     2. for of 

    var myArray = [1,2,3,4,5];
    
    myArray.desc = "a array"; // js
    
    myArray.forEach(value=>console.log(value));
    
    for(var n1 in myArray){
      console.log(n1);
    }
    
    for(var n2 in myArray){
      console.log(myArray[n2]);
    }
    
    for(var n3 of myArray){
      console.log(n3);
    }
    
    for(var n4 of "i'm an array"){
      console.log(n4);
    }
  • 相关阅读:
    Effective C# 学习笔记(二十九)在范型中的协变和逆变
    Effective C# 学习笔记(二十一)为类型定义有限的职责
    Effective C# 学习笔记(十四) 尽量减少重复性的初始化逻辑
    Effective C# 学习笔记(十三)对静态类成员使用合适的初始化方式
    Effective C# 学习笔记(二十六)防止返回类内部的对象引用
    Effective C# 学习笔记(十二) 多用成员变量初始化,少用指定赋值
    Effective C# 学习笔记(二十七)使你的类型可被序列化
    Effective C# 学习笔记(二十四)运用Delegates来实现回调
    Effective C# 学习笔记(二十)不可变的原子值类型的好处
    UIPageController与UIScrollView的联合使用
  • 原文地址:https://www.cnblogs.com/ImaY/p/6879529.html
Copyright © 2011-2022 走看看