zoukankan      html  css  js  c++  java
  • typescript

    一、typescript
    1.简介:typescript是JavaScript的一个超集(语法遵循es6标准),是微软发明的语言
    ts做为js的一个语法糖,类似于css和less,sass的关系,ts相比js更加容易维护和开发,但是最后一定要转为js才能运行
    ts==》Microsoft
    ts=>Angular4=>Google
    ts支持es6的语法,Angluar4的开发语言是ts,编译器(IDE)的支持下良好
    2.安装ts环境
    1)安装node.js
    2)安装ts
    windows:npm install -g typescript
    mac:npm install -g typescript
    使用命令 tsc -v 。查看版本号,出现版本号说明成功
    3.ts语法编译
    1)在线编译
    http://www.typescriptlang.org/play/index.html
    2)终端编译
    cd文件夹 进入ts文件所在位置
    使用tsc 命令编译:tsc xxx.ts
    3).IDE对ts强大的支持可以帮助我们直接编译
    4)直接使用<script></script>中写ts语法
    引入文件:
    <script src='../lib/typescript.min.js'><script>
    <script src='../lib/typescript.compile.min.js'><script>
    直接对ts语法进行解析
    5)vsCode构造ts语法编译自动监听
    (1)创建项目根目录 eg:vs
    (2)打开终端,进入这个文件夹
    mac:cd文件夹路劲
    windows:cd/d文件夹路径
    鼠标放在文件夹上,右键终端打开
    (3)tsc -init
    将根目录初始化为自动构建目录 生成一个文件tsconfig.json
    (4)打开tsconfig.json文件
    rootDir:输入文件夹,配置了这个属性的文件夹里边的ts。文件都会被解析
    outDir:输出文件夹,将编译好的ts文件转为js文件并放进这个文件夹
    (5)在vs文件下创建目录
    ts文件目录:src
    js文件目录:bin
    配置:
    rootDir:"./src",
    outDir:"./bin"
    在src文件夹创建文件 hello.ts
    开始监听:
    mac:com+shift+b
    windows:ctrl+shift+b
    弹出框有两个内容
    监视 watch:自动监听,自动将文件转为js
    构建 build:手动构建,只会构建当前有的文件
    关闭监听:
    windows:ctrl+c
    mac:ctrl+c

    4.字符串 string
    1)//多行字符串
    var str=`hello
    world`;
    console.log(str);

    2)字符串模板
    var a='lisi';
    var getA=function(){
    return 'lisi';
    }
    console.log(`我是${a}`);
    console.log(`我是${getA()}`);

    3.函数参数拆分字符串
    function fun2(temp: TemplateStringsArray, name: string, age: number, sex: string) {
    console.log(temp);
    console.log(name);
    console.log(age);
    console.log(sex);
    }
    var myName = 'lisi';
    var getAge = function () {
    return 23;
    }
    var sex = '男';
    fun2`我的名字是${myName},我今年${getAge()},我是${sex}的`;

    5.指定变量和参数的类型
    1)在定义变量的后面直接加上变量的类型
    语法:
    var a=10;a='lisi';js不报错
    ===》
    var a:number=10;
    a='lisi';//ts中报错

    ts对变量有一个新的类型推断机制。在第一次声明变量并赋值时,会自行推断变量的类型,如果改变变量的值类型不同,会报语法错误,不被允许
    如果不想被限制变量类型,可以使用any
    var str:any='123';
    str=123;

    2)void 类型
    一般用于函数声明,如果函数声明使用了void。则说明该函数没有返回值,如果写了返回值就会报错,
    语法:
    function test():void{
    //函数体中不允许写return
    }


    3.指定函数返回值类型
    语法:
    function test():string{
    return '123';
    }
    //指定函数返回值必须是string类型,否则报错
    4)指定函数参数的类型
    语法:
    function test2(sname:string,age:number):object{
    return{
    name:sname,
    age:age
    }
    }

    5)通过class自定义类型,这样的好处在于实例化类的时候可以自动提示类中的属性:
    语法:
    class Person{
    name:string,
    age:number,
    sex:string,
    friends:object
    }

    var info2: Person = new Person();
    info2.name = 'lisi';
    info2.age = 23;
    info2.sex = '男';
    info2.friends = ['lisi', 'wangwu'];
    console.log(info2);


    6)函数参数有类型的默认值
    有默认值的参数一定是尾参数
    function test3(a:string,b:number,c:string='lisi'){
    console.log(a,b,c);
    }
    test3('wangwu',34);
    test3('mazi',21,'lalal');

    7.可选参数
    使用(?)表示该参数是可选参数
    注意:必选参数必须放在可选参数之前,默认值的参数一定是尾参数
    function test4(a:string,b?:number,c:boolean=true){
    console.log(a,b,c);
    }
    test4('lisi');//lisi undefined true
    test4('lisi',23);//lisi 23 true
    test4('lisi',23,false);//lisi 23 false

    六、函数
    1)rest and spread 操作符,用来操作任意数量的函数参数
    function fun1(...args){
    console.log(args);
    }
    fun1(1,2,3);
    fun1(1,2,3,4,333);

    2)Generator函数
    用于控制函数的执行过程,手动的停止和恢复代码的执行
    yield: 暂停函数执行
    .next:恢复函数执行
    注意:函数的执行需要将函数赋值给一个变量,然后调用next,进行一步一步的执行
    //generator函数
    function* fun3() {
    console.log('开始');
    yield '暂停';//只允许在生成器正文中使用 "yield" 表达式
    var a = 10;
    console.log(a);
    yield;
    console.log('结束');
    }
    // fun3()//生成器无法如此调用
    var f = fun3();
    f.next();//开始
    f.next();//结束10
    f.next();//结束

    运行逻辑:
    1)当程序运行遇到yield时。暂停执行后面的代码,并且将紧跟在yield后面的表达式做为返回的对象的value,值返回
    2)下一次执行next方法时,继续向下执行,直到遇到下一个yield
    3)如果没有遇到yield,直接运行到函数的结束,遇到return为止,并且将return后面的语句或表达式的值,做为返回对象的value值返回
    4)如果函数没有return,那个返回的对象的value值属性是undefined
    fun5.next()会返回一个对象,该对象中有两个属性,value值是yield后面的内容,done是布尔值,表示是否遍历结束
    如果generator函数中没有yield,整个函数就变成了一个延缓执行函数,当调用next,才会执行
    3)析构函数
    通过表达式将对象或数组中的内容拆分成任意数量的变量,其实就是es6中的解构
    4)箭头表达式
    用来声明匿名函数,消除传统的匿名函数中this指向问题

  • 相关阅读:
    C# 实现复杂对象的序列化与反序列化
    C#操纵XML文档(主要是应用程序的配置文件)
    滕王阁序——王 勃 (注:我至爱的一篇文章)
    SmartClient(智能客户端)学习笔记之——Smart Client基本学习资源
    listview按列自动排序的一点补充
    (转)SmartClient(智能客户端)学习笔记之——Microsoft Updater Application Block ApplicationUpdater assembly设计
    用超图实现城市给水的爆管分析
    .net2005中对asp.net中GridView的常用操作
    .net2003中对DataGrid的常用操作
    为DataGrid或者GridView或者DataList最前面增加一排序号
  • 原文地址:https://www.cnblogs.com/txf-123/p/11550465.html
Copyright © 2011-2022 走看看