正清和雅 發表於 2019-9-19 16:14:00

typescript

<p>一、typescript<br>1.简介:typescript是JavaScript的一个超集(语法遵循es6标准),是微软发明的语言<br>ts做为js的一个语法糖,类似于css和less,sass的关系,ts相比js更加容易维护和开发,但是最后一定要转为js才能运行<br>ts==》Microsoft<br>ts=&gt;Angular4=&gt;Google<br>ts支持es6的语法,Angluar4的开发语言是ts,编译器(IDE)的支持下良好<br>2.安装ts环境<br>1)安装node.js<br>2)安装ts<br>windows:npm install -g typescript<br>mac:npm install -g typescript<br>使用命令 tsc -v 。查看版本号,出现版本号说明成功<br>3.ts语法编译<br>1)在线编译                <br>http://www.typescriptlang.org/play/index.html<br>2)终端编译<br>cd文件夹 进入ts文件所在位置<br>使用tsc        命令编译:tsc xxx.ts<br>3).IDE对ts强大的支持可以帮助我们直接编译<br>4)直接使用&lt;script&gt;&lt;/script&gt;中写ts语法<br>引入文件:<br>&lt;script src='../lib/typescript.min.js'&gt;&lt;script&gt;<br>&lt;script src='../lib/typescript.compile.min.js'&gt;&lt;script&gt;<br>直接对ts语法进行解析<br>5)vsCode构造ts语法编译自动监听<br>(1)创建项目根目录 eg:vs<br>(2)打开终端,进入这个文件夹<br>mac:cd文件夹路劲<br>windows:cd/d文件夹路径<br>鼠标放在文件夹上,右键终端打开<br>(3)tsc -init<br>将根目录初始化为自动构建目录生成一个文件tsconfig.json<br>(4)打开tsconfig.json文件<br>rootDir:输入文件夹,配置了这个属性的文件夹里边的ts。文件都会被解析<br>outDir:输出文件夹,将编译好的ts文件转为js文件并放进这个文件夹<br>(5)在vs文件下创建目录<br>ts文件目录:src<br>js文件目录:bin<br>配置:<br>rootDir:"./src",<br>outDir:"./bin"<br>在src文件夹创建文件 hello.ts<br>开始监听:<br>mac:com+shift+b<br>windows:ctrl+shift+b<br>弹出框有两个内容<br>监视 watch:自动监听,自动将文件转为js<br>构建 build:手动构建,只会构建当前有的文件<br>关闭监听:<br>windows:ctrl+c<br>mac:ctrl+c</p>
<p>4.字符串 string<br>1)//多行字符串<br>var str=`hello <br>      world`;<br>      console.log(str);</p>
<p>2)字符串模板<br>var a='lisi';<br>var getA=function(){<br>    return 'lisi';<br>}<br>console.log(`我是${a}`);<br>console.log(`我是${getA()}`);</p>
<p>3.函数参数拆分字符串<br>function fun2(temp: TemplateStringsArray, name: string, age: number, sex: string) {<br>    console.log(temp);<br>    console.log(name);<br>    console.log(age);<br>    console.log(sex);<br>}<br>var myName = 'lisi';<br>var getAge = function () {<br>    return 23;<br>}<br>var sex = '男';<br>fun2`我的名字是${myName},我今年${getAge()},我是${sex}的`;</p>
<p>5.指定变量和参数的类型<br>1)在定义变量的后面直接加上变量的类型<br>语法:<br>var a=10;a='lisi';js不报错<br>===》<br>var a:number=10;<br>a='lisi';//ts中报错</p>
<p>ts对变量有一个新的类型推断机制。在第一次声明变量并赋值时,会自行推断变量的类型,如果改变变量的值类型不同,会报语法错误,不被允许<br>如果不想被限制变量类型,可以使用any<br>var str:any='123';<br>str=123;</p>
<p>2)void 类型<br>一般用于函数声明,如果函数声明使用了void。则说明该函数没有返回值,如果写了返回值就会报错,<br>语法:<br>function test():void{<br>//函数体中不允许写return<br>}</p>
<p><br>3.指定函数返回值类型<br>语法:<br>function test():string{<br>return '123';<br>}<br>//指定函数返回值必须是string类型,否则报错<br>4)指定函数参数的类型<br>语法:<br>function test2(sname:string,age:number):object{<br>return{<br>name:sname,<br>age:age<br>}<br>}</p>
<p>5)通过class自定义类型,这样的好处在于实例化类的时候可以自动提示类中的属性:<br>语法:<br>class Person{<br>name:string,<br>age:number,<br>sex:string,<br>friends:object<br>}</p>
<p>var info2: Person = new Person();<br>info2.name = 'lisi';<br>info2.age = 23;<br>info2.sex = '男';<br>info2.friends = ['lisi', 'wangwu'];<br>console.log(info2);</p>
<p><br>6)函数参数有类型的默认值<br>有默认值的参数一定是尾参数<br>function test3(a:string,b:number,c:string='lisi'){<br>console.log(a,b,c);<br>}<br>test3('wangwu',34);<br>test3('mazi',21,'lalal');</p>
<p>7.可选参数<br>使用(?)表示该参数是可选参数<br>注意:必选参数必须放在可选参数之前,默认值的参数一定是尾参数<br>function test4(a:string,b?:number,c:boolean=true){<br>    console.log(a,b,c);<br>}<br>test4('lisi');//lisi undefined true<br>test4('lisi',23);//lisi 23 true<br>test4('lisi',23,false);//lisi 23 false</p>
<p>六、函数<br>1)rest and spread 操作符,用来操作任意数量的函数参数<br>function fun1(...args){<br>    console.log(args);<br>}<br>fun1(1,2,3);<br>fun1(1,2,3,4,333);</p>
<p>2)Generator函数<br>用于控制函数的执行过程,手动的停止和恢复代码的执行<br>yield:        暂停函数执行<br>.next:恢复函数执行<br>注意:函数的执行需要将函数赋值给一个变量,然后调用next,进行一步一步的执行<br>//generator函数<br>function* fun3() {<br>    console.log('开始');<br>    yield '暂停';//只允许在生成器正文中使用 "yield" 表达式<br>    var a = 10;<br>    console.log(a);<br>    yield;<br>    console.log('结束');<br>}<br>// fun3()//生成器无法如此调用<br>var f = fun3();<br>f.next();//开始<br>f.next();//结束10<br>f.next();//结束</p>
<p>运行逻辑:<br>1)当程序运行遇到yield时。暂停执行后面的代码,并且将紧跟在yield后面的表达式做为返回的对象的value,值返回<br>2)下一次执行next方法时,继续向下执行,直到遇到下一个yield<br>3)如果没有遇到yield,直接运行到函数的结束,遇到return为止,并且将return后面的语句或表达式的值,做为返回对象的value值返回<br>4)如果函数没有return,那个返回的对象的value值属性是undefined<br>fun5.next()会返回一个对象,该对象中有两个属性,value值是yield后面的内容,done是布尔值,表示是否遍历结束<br>如果generator函数中没有yield,整个函数就变成了一个延缓执行函数,当调用next,才会执行<br>3)析构函数<br>通过表达式将对象或数组中的内容拆分成任意数量的变量,其实就是es6中的解构<br>4)箭头表达式<br>用来声明匿名函数,消除传统的匿名函数中this指向问题</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/txf-123/p/11550465.html
頁: [1]
查看完整版本: typescript