Ts笔记

62 阅读2分钟

TypeScript

一、安装

命令:npm i -g typescript

验证是否安装:tsc

二、编译

命令:tsc 文件名.ts

tsc //编译目录下面所有文件

tsc 文件名.ts -w //监视自动更新(只对当前文件有效)

//全局监视更新

//根目录新建tsconfig.json

//tsc -w //全局监视自动更新

//tsconfig.json配置文件

1.include : [ //哪些文件会自动编译

'./src//*'  //:任意目录;*:任意文件

]

2.exclude:[

'./src/hello/**/*' //不需要编译的文件

]

3.extends:'文件' //继承文件

4.files:['文件名1','文件名2'] //需要编译的文件名

5.compilerOptions:{

'target':'ES3' //要编译成的js版本

'module':'ES3' //模块化解决方案

'lib':['ES6'] //指定浏览器要使用的库

'outDir':'./dist' //编译后的js文件要放到的文件目录

'outFile':'./dist/app.js' //将左右js文件合并到一个文件中(全局作用域中的文件)

'allowJs':false //是否对js文件进行编译

'checkJs':false //是否检查js语法

'removeComments':true //是否编译注释

'noEmit':false //不生成编译后的文件

'noEmitOnError':false //当有错误的时候不生成编译后的文件

'alwaysStrict':false //编译后的文件是否使用严格模式

'noImplicitAny':true //不会自己转any类型

'npImplicitThis':true //不允许不明确的this类型

'strictNullChecks':true //严格检查空值

'strict':true //严格检查总开关

}

三、基本类型

let a : number = 1;

let b : string = 'hello';

let c = true; //这种的ts会自动判断类型

function sum( a:number, b:number ) : number {}

//前两个是参数的数据类型,最后一个是函数返回值的数据类型

let a : 10; //赋值后无法修改

let d : any //任意类型

let c : unkown //不知道是什么类型,无法赋值给其他的变量

//类型断言

let d = e as string; //断言这个e就是字符串

let d = e //同上

function fn() : void {} //函数没有返回值(undefined)

function fn() : never {} //函数永远不会返回结果

let f: { name : string } //f是一个对象,并且对象里面只有个name属性,并且是字符串

let f : { name? : string} //name属性可能有也可能没有

let f : { name : string ,[propsName : string] : any } //除了name属性,还可以有任意属性

let fn : ( a : number, b : number )=>number //函数fn两个参数,都是number,返回值是number

let g : string[] //字符串数组

let g : Array //同上

//元组:固定长度的数组

let h : [string, string] //长度为2的string数组

//enum  枚举

enum Gender{

man : 1

woman : 0

}

let i : {gender:Gender}

i = { gender:Gender.man }

//类型别名

type num = 1 | 2 | 3 | 4 | 5

let k : num

image-20220529144101081

四、打包

五、面向对象

1、类

(1)

class Person{

name : string = '这是名字';

static age : number = 18; //不可以修改的属性

readonly sex : string = '男'; //只读属性

//定义方法

togetData(){

//方法

}

state togetData(){} //类方法

}

constructor(){} //构造函数

--继承

class cat extends animal{

}

super表示父类

abstract class animal{} //抽象类,不能用来创建对象

abstract togetData():void //抽象方法,只能定义在抽象类里面,子类必须重写