• typescript


    1. typescript 含义

    TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集...

    就是 js 的扩展,融入了大量 es6 的语法,文件后缀为 .ts  ,可通过安装 typescript (npm install -g typescript ) ,运行  tsc hello (js 文件名) 生成对应 js 文档 ,或者在线编译

    2.细节点

    2.1 多行字符串   ``

    const str = `ss
    asa`;
     
    2.2 字符串模板   `${name}`  `${get()}`
    var str2=`eee${str}`
     
    2.3  自动拆分字符串
    function get(tmp,name,age){...} 
    get `saa${name}ssasa`
     
    2.4  类型  / 自动推断类型
    var name:string='wj'     ( number  boolean )
    var name='wj'
     
    2.5 任意类型
    var name:any='wj'
     
    2.6  函数传参 及返回值限制
    function test(name:string):void{ return '' }
     
    2.7  自定义类型
    class Person{name:string,age:number}

    var zhang:Person= new Person ();
    zhang.name=''

    2.8  省略参数   ...arg    es6扩展运算符 三个点

    定义:扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中

    基本用法:省略

    function a(...arg){ arg.forEach(val){ console.log(val) } }

    将一个数组,变为参数序列

    function push(array, ...items) {  
    array.push(...items);  
    }  
    function add(x, y) {  
    return x + y;  
    }  
    var numbers = [4, 38];  
    add(...numbers) // 42
    View Code

    替代数组的 apply 方法

    // ES5 的写法  
    function f(x, y, z) {  
    // ...  
    }  
    var args = [0, 1, 2];  
    f.apply(null, args);  
    // ES6 的写法  
    function f(x, y, z) {  
    // ...  
    }  
    var args = [0, 1, 2];  
    f(...args);
    View Code

    应用Math.max方法

    // ES5 的写法  
    Math.max.apply(null, [14, 3, 77])  
    // ES6 的写法  
    Math.max(...[14, 3, 77])  
    //  等同于  
    Math.max(14, 3, 77);
    View Code

    push数组

    // ES5 的写法  
    var arr1 = [0, 1, 2];  
    var arr2 = [3, 4, 5];  
    Array.prototype.push.apply(arr1, arr2);  
    // ES6 的写法  
    var arr1 = [0, 1, 2];  
    var arr2 = [3, 4, 5];  
    arr1.push(...arr2);  
    View Code

    合并数组

    // ES5  
    [1, 2].concat(more)  
    // ES6  
    [1, 2, ...more]  
    var arr1 = ['a', 'b'];  
    var arr2 = ['c'];  
    var arr3 = ['d', 'e'];  
    // ES5 的合并数组  
    arr1.concat(arr2, arr3);  
    // [ 'a', 'b', 'c', 'd', 'e' ]  
    // ES6 的合并数组  
    [...arr1, ...arr2, ...arr3]  
    // [ 'a', 'b', 'c', 'd', 'e' ]
    View Code

    与解构赋值结合

    // ES5  
    a = list[0], rest = list.slice(1)  
    // ES6  
    [a, ...rest] = list  
    下面是另外一些例子。  
    const [first, ...rest] = [1, 2, 3, 4, 5];  
    first // 1  
    rest // [2, 3, 4, 5]  
    const [first, ...rest] = [];  
    first // undefined  
    rest // []:  
    const [first, ...rest] = ["foo"];  
    first // "foo"  
    rest // []
    View Code

    将字符串转为真正的数组

    [...'hello']  
    // [ "h", "e", "l", "l", "o" ] 
    类数组转为真数组
    [...arguments] // 替换es5中的Array.prototype.slice.call(arguments)写法

    对象扩展运算符

    let bar = { a: 1, b: 2 };
    let baz = { ...bar }; // { a: 1, b: 2 }

    等价于

    let bar = { a: 1, b: 2 };
    let baz = Object.assign({}, bar); // { a: 1, b: 2 }    //Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。(如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性)。

    常见用法:修改对象的部分属性

    let bar = {a: 1, b: 2};

    let baz = {...bar, ...{a:2, b: 4}}; // {a: 2, b: 4}

    2.9 参数默认值  末尾值(默认)

    function a(name,age:20,...arg){ arg.forEach(val){ console.log(val) } }

    2.10 可选参数 必须位于必选参数后面   b?:string
     
    2.11 generator 函数

    function* dosomething(){
    console.log('start');
    yield '100'
    console.log('end');
    }

    var func1=dosomething();
    func1.next()
    ...
    func1.next()

    2.12 析构表达式

    对象析构表达式
    变量取用、起别名 、多层变量 二次析构

    getStock(){

      return {

      code:'10010',

      price:{

      priceEnd:'$100'

    }

           str:''  //  无关代码

           ...

    }

    var {code:codex,price:{priceEnd}}=getStock()       //  codex  变量表示将取出来的code重命名

    2.13 数组析构表达式

    var arr=[1,2,3,4]
    var [arr1,arr2]=arr;     // arr1  1    arr2   2
    var [arr1,,,arr2]=arr;   / arr1  1    arr2   4
    var [arr1,arr2,...oth]=arr;    / arr1  1    arr2   2     oth  [3,4]

    2.14 箭头表达式

    var sum = (arg1,arg2) => arg1+arg2
    var sum = (arg1,arg2) => {
    return arg1+arg2
    }
    var sum = arg1=> arg1
    var sum = ()=> {}

    arr.filter(val => val % 2 === 0 )      //  [2,4]

    2.15 箭头函数 - 保持 this 定义指向

    setTimeout ...

    2.16  forEach  for in    for of

    var arr=[1,2,3]
    forEach 自定义属性循环不出来 可以  break continue return 中断
    for in 自定义属性可以循环出来 可以  break continue return 中断    ( 循环中 i 代表属性,自定义属性可遍历出来 )
    for of 定义属性循环不出来 可以  break continue return 中断     ( 循环中 i 代表索引,自定义属性不可遍历出来 )

    2.17  类

    继承 extends privite
    泛型 只能放一类
    var workers:Array<Person> = []
    workers[0]=new Person('wj');
    workers[1]=new Employee('wj','29');
    workers[2]=2    //err

    2.18  接口  interface

    interface IPerson {
    name:string,
    age:number
    }
    class Person{
    constructor (public config:IPerson){}
    }

    2.19 接口的实现  implements

    interface Animal{
    eat()
    }
    class Sheep implements Animal{
    eat(){
    ...
    }
    }

    2.20  模块  import  export

    第三方常用文件   *.d.ts

    3.相关文档

    在线编译网站

    typescript

    babel

    安装第三方 *.d.ts 文件

    typings

    DefinitelyTyped 

  • 相关阅读:
    备胎的养成记KeepAlived实现热备负载
    入坑系列之HAProxy负载均衡
    将Error异常日志从普通日志中剥离
    一步一步在Windows中使用MyCat负载均衡 下篇
    年终的第一篇总结 结束南漂 写在2017
    Android实现TCP断点上传,后台C#服务实现接收
    为什么我会反对大家写工作日报
    ANSI C、ISO C、Standard C联系与区别
    c、c++ char*和wchar*互相转换
    宽字符与Unicode (c语言 汉语字符串长度)
  • 原文地址:https://www.cnblogs.com/justSmile2/p/11110884.html
Copyright © 2020-2023  润新知