TS类型以及类型声明
- 类型声明初识
- 类型声明详解01
- 使用字面量进行类型声明
- 使用any进行类型声明
- unknown
- void(undefined)
- never
- 类型声明详解02
-
- 编译选项
-
类型声明初识
格式: let 变量名:变量类型
| let a: number; |
| a=123; |
| |
| |
| |
| let b:string; |
| b='hello'; |
| |
| |
| |
| let c:boolean =true; |
| |
| let d=false; |
| |
复制
类型声明详解01
方法类型声明:
格式:(params:type):返回值类型
| function add(a:number,b:number):number { |
| return a+b; |
| } |
复制
使用字面量进行类型声明
可以直接使用字面量进行类型声明
复制
加|表示或的意思可以连接多个类型(联合类型 )
| let b: 'male' | 'female'; |
| b='male'; |
| b='female'; |
复制
a的值可以是string或者boolean类型
复制
使用any进行类型声明
any :表示的时任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测
any可以赋值给任意变量
复制
区别于let b:unknown;,unknown:未知类型,它不可以赋值给其他类型;
unknown
unknown:未知类型,无法赋值给其他类型
| let a:string; |
| a='hello'; |
| |
| let b:unknown; |
| b='world'; |
| |
| |
| a =b as string; |
| a=<string>b; |
复制
void(undefined)
表示为空值
| |
| function aa(a:number):void { |
| } |
复制
never
never:表示没有返回结果,通常用在报错中
| function aa(a:string) :never{ |
| throw new Error('报错了!'); |
| } |
复制
类型声明详解02
object
object表示一个js对象,一般不用而使用{}
语法:{属性名:属性值}
| |
| let a:{name:string}; |
| a={name:'aaa'}; |
复制
?表示age有可以没有也可以,在属性名后加?表示可选属性
| |
| let a:{name:string,age?:number}; |
| |
| a={name:'zzq'}; |
| |
| a={name:'abc',age:26}; |
复制
[proName:string]:any:表示name属性必须有其他属性随便加
| let a:{name:string,[proName:string]:any}; |
复制
设置函数结构的类型声明
语法:(形参:类型)=>返回值
| let d:(a:number,b:number)=>number; |
| |
| d=function(a,b){ |
| return a+b; |
| } |
复制
array
数组的类型声明:
类型[] /Array<类型>
| |
| let a:string[]; |
| |
| |
| let b:number[]; |
| |
| let d:Array<string>; |
| |
| let e:any[]; |
复制
| let d:any[]; |
| d=[1,'ddd',true]; |
复制
enum
| enum Gender{ |
| Male=0, |
| Female=1 |
| } |
| |
| let a:{name:string,gender:Gender}; |
| |
| a={name:'孙悟空',gender:Gender.Male}; |
| |
| a.gender===Gender.Male |
复制
类型的别名
语法:type 类型别名=类型
| |
| let a:1|2|3|4|5; |
| let b:1|2|3|4|5; |
| let c:1|2|3|4|5; |
| |
| |
| type mytype=1|2|3|4|5; |
| |
| let d:mytype; |
| let e:mytype; |
| let f:mytype; |
| let g:mytype; |
复制
编译选项
tsconfig.json是ts编译器的配置文件,ts编译器可以根据它的信息来对代码进行编译。
编译选项01
“”include“”用来指定哪些ts文件需要被编译,
| { |
| "include": [ |
| "./src/**/*" |
| ] |
| } |
复制
路径:**表示任意目录,*表示任意文件
exclude:表示去除,不编译exclude定义的文件夹和文件,一般不声明,默认值:{“node_modules”,"bower_contents","jspm_packages"}
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "exclude": [ |
| "./src/**/*" |
| ] |
| } |
复制
编译选项02
compilerOptions:编译配置
- target
ts可以被编译成js哪个版本,默认ES3
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "exclude": [ |
| |
| ], |
| "compilerOptions": { |
| "target": "ES3" |
| } |
| } |
复制
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "ES2015" |
| } |
| } |
复制
- lib
用来指定项目中使用的库,一般不使用
- outDir
ts编译成js后放置的目录,一般放在dist目录下
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "ES2015", |
| "outDir": "./dist" |
| } |
| } |
复制
- outFile
将编译后的文件合成一个文件。下例中编译后的js文件全部合并到app.js中了
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js" |
| } |
| } |
复制
- allowJs
是否对js文件进行编译,默认为false
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false |
| } |
| } |
复制
- checkJs
是否检查JS代码是否符合语法规范,默认值false
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false, |
| "checkJs": false |
| } |
| } |
复制
- removeComments
是否移除js注释(ts原文件的注释),默认为false不移除
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false, |
| "checkJs": false, |
| "removeComments": false |
| } |
| } |
复制
- noEmit
不生成编译后的js文件(只执行编译过程)默认false
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false, |
| "checkJs": false, |
| "removeComments": false, |
| "noEmit": false |
| } |
| } |
复制
- noEmitOnError
当有错误时,不生成编译后的js文件到dist目录
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false, |
| "checkJs": false, |
| "removeComments": false, |
| "noEmit": false, |
| "noEmitOnError": false |
| } |
| } |
复制
- alwaysStrict
用来设置编译后的文件是否使用严格模式,默认false
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false, |
| "checkJs": false, |
| "removeComments": false, |
| "noEmit": false, |
| "noEmitOnError": false, |
| "alwaysStrict": false |
| } |
| } |
复制
- noImplicitAny
不允许隐式的any类型(声明的时候不指定类型,隐式的将类型声明为any类型),默认是false允许
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false, |
| "checkJs": false, |
| "removeComments": false, |
| "noEmit": false, |
| "noEmitOnError": false, |
| "alwaysStrict": false, |
| "noImplicitAny": true |
| } |
| } |
复制
- noImplicitThis
不允许不明确类型的this,默认为false允许
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false, |
| "checkJs": false, |
| "removeComments": false, |
| "noEmit": false, |
| "noEmitOnError": false, |
| "alwaysStrict": false, |
| "noImplicitAny": true, |
| "noImplicitThis": false |
| } |
| } |
复制
- strictNullChecks
严格的检查空值(检查对象是否为空),默认为false,不检查,true为检查
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false, |
| "checkJs": false, |
| "removeComments": false, |
| "noEmit": false, |
| "noEmitOnError": false, |
| "alwaysStrict": false, |
| "noImplicitAny": true, |
| "noImplicitThis": true, |
| "strictNullChecks": false |
| } |
| } |
复制
- strict
严格模式的总开关,true开启,false关闭则所有类型的严格模式都关闭,一般放在json配置文件的上面
| { |
| "include": [ |
| "./src/**/*" |
| ], |
| "compilerOptions": { |
| "target": "ES3", |
| "module": "System", |
| "outDir": "./dist", |
| "outFile": "./dist/app.js", |
| "allowJs": false, |
| "checkJs": false, |
| "removeComments": false, |
| "noEmit": false, |
| "noEmitOnError": false, |
| "strict": true, |
| "alwaysStrict": false, |
| "noImplicitAny": true, |
| "noImplicitThis": true, |
| "strictNullChecks": false, |
| } |
| } |
复制