安装及初步使用
1.CMD全局安装
| npm install -g typescript |
复制
2.检查是否安装成功
复制
| 如报错tsc 不是内部或外部命令,也不是可运行的程序或批处理文件[可参考](https: |
复制
3.在vscode中新建ts文件01_ts.ts
| let str:string='zd'; |
| console.log(str) |
复制
4.新建页面index.html,引入ts文件
| <script src="./01_ts.ts"></script> |
复制
点开页面会报错,因为浏览器不支持ts语法,所以要转换成js文件
5.ts转js文件
文件夹在终端打开后在终端输入 tsc 01_ts.ts -watch(注意01_ts.ts是文件名)监听这个ts文件变化转换成js,随后会生成一个同名js文件,在页面script中引入同名js文件即可
6.vscode中自动编译ts代码 意思是自动生成js文件
选择文件夹在终端打开并输入tsc --init生成一个json文件
需要在json文件中设置如下图
然后点击终端->运行任务->显示所有任务->监视你文件夹下的tsconfig-json
新建一个.ts文件,就会自动生成js文件夹及其下边自动编译的js文件,html直接就可以在script中引入js文件了

类型注解
类型注解就是给变量、参数等指定类型。
常用类型有:string number boolean null undefined 数组 元祖 枚举 any object
| |
| let n:Number=123 |
| |
| let n:Number=undefined |
| let s:string=null |
| |
| |
| |
| let arr:number[]=[1,2,3] |
| |
| let arr1:Array<string>=['11','22','33'] |
| console.log(arr,arr1) |
| |
| |
| |
| |
| let arr3:[string,number,boolean]=['555',444,false] |
| |
| let arr3:[string,number,boolean]=['555',444,false,222] |
| let arr3:[string,number,boolean]=['555',444] |
| console.log(arr3) |
| console.log(arr3[0].split('')) |
| |
| |
| |
| enum sex{ |
| 男, |
| 女 |
| } |
| console.log(sex.女) |
| console.log(sex[1]) |
| |
| enum sex1{ |
| nan='男', |
| nv='女' |
| } |
| console.log(sex1.nan) |
| console.log(sex1[0]) |
| |
| |
| |
| |
| let str:any=123 |
| |
| let arr:any[]=[1,'22',true,3.14] |
| console.log(arr) |
| |
| |
| |
| function fn():void{ |
| console.log('void') |
| return '123' |
| } |
| fn() |
| |
| |
| |
| function fn(obj:object):object{ |
| return { name:obj.name,age:obj.age} |
| } |
| console.log(fn({ name:'zs',age:12})) |
复制
接口
接口简单理解为一种约束
| |
| |
| interface My{ |
| first:string |
| last:string |
| possible?:number |
| readonly id:number |
| } |
| |
| |
| function WriteName(person:My){ |
| person.id=456 |
| return person.first+'_'+person.last+'**id:'+person.id |
| } |
| |
| |
| let p1={ |
| first:'张', |
| last:'三', |
| id:123 |
| } |
| console.log(WriteName(p1)) |
| |
| |
| let p2={ |
| first:'张', |
| } |
| console.log(WriteName(p2)) |
| |
| |
| let p3={ |
| first1111:'张', |
| last:'三' |
| } |
| console.log(WriteName(p3)) |
| |
| |
| interface interFun{ |
| |
| (str:string,i:string):boolean |
| } |
| const IFn:interFun=function(str,i){ |
| return str.search(i)>=0 |
| } |
| console.log(IFn('啊啊','阿')) |
| |
| |
| |
| |
复制
类
| |
| class Person { |
| name:string |
| age:number |
| |
| |
| |
| |
| |
| constructor(name:string, age:number) { |
| this.name = name; |
| this.age = age; |
| } |
| |
| say() { |
| return '我叫' + this.name + '今年' + this.age + '岁' |
| } |
| } |
| |
| let p2 = new Person('李四', 12); |
| console.log(p2.say()) |
复制
类与接口的合用
| class Person { |
| name:string |
| age:number |
| constructor(name:string, age:number) { |
| this.name = name; |
| this.age = age; |
| } |
| } |
| interface personJieKou{ |
| name:string |
| age:number |
| } |
| function WritePerson(person:personJieKou){ |
| return `类与接口合用:我${person.name}今年${person.age}岁` |
| } |
| let Jperson={ |
| name:'赵武', |
| age:100 |
| } |
| console.log(WritePerson(Jperson)) |
复制