Hello TypeScript
ts文件经过编译生成js文件。
基本类型
类型声明
-
类型声明是TS非常重要的一个特点 -
通过类型声明可以指定TS中变量(参数、形参)的类型 -
指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错 -
简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值 -
语法: -
let 变量: 类型; let 变量: 类型 = 值; function fn(参数: 类型, 参数: 类型): 类型{ ... } -
自动类型判断 - TS拥有自动的类型判断机制
- 当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型
- 所以如果你的变量的声明和赋值时同时进行的,可以省略掉类型声明
let a:number;
//a="123" 不能将类型“string”分配给类型“number”。
let b:number = 123;
let f = false;
//f = 12 不能将类型“number”分配给类型“boolean”。
function sum(a:number,b:number):number{
return a + b;
}
let a3 : 10;
let b3 : 4 | 3;
b3 = 4;
b3 = 3;
//b3 = 5;不能将类型“5”分配给类型“4 | 3”。
let c3 : number | string;
//c3 = false;不能将类型“boolean”分配给类型“string | number”。
//(不指定类型)或者申明为any:相当于关闭ts类型检查 不建议使用
//d 也可以赋值给任意变量
let d :any;
d = 10;
d = true;
c3 = d;
//unknown 一个类型安全的any
let e : unknown;
e = true;
//c3 = e 不能将类型“unknown”分配给类型“string | number”。
//类型断言
e = d as string;
e = <string>d
function fn():void{
return null
}
function fn1():never{
throw new Error('报错的函数')
}
//- object
let obj: object = {};
obj = {name:'jack'}
let o:{name:string,age?:number}
o = {name:"jack"}
//任意字符串类型的属性名,任意类型的属性值
let object:{name:string,[proName:string]:any}
object = {name:"jack",age:18,isShow:true}
//- array
let list: number[] = [1, 2, 3];
//let list: Array<number> = [1, 2, 3];
//- tuple
let x: [string, number];
x = ["hello", 10];
// enum
enum Color {
Red,
Green,
Blue,
}
let c: Color = Color.Green;
let o1 : {name:string,color:Color}
o1 = {name:"jack",color:Color.Blue}
/*enum Color {
Red = 1,
Green,
Blue,
}
let c: Color = Color.Green;
enum Color {
Red = 1,
Green = 2,
Blue = 4,
}
let c: Color = Color.Green;*/
编译选项
-
自动编译文件
-
自动编译整个项目
-
如果直接使用tsc指令,则可以自动将当前项目下的所有ts文件编译为js文件。 -
但是能直接使用tsc命令的前提时,要先在项目根目录下创建一个ts的配置文件 tsconfig.json -
tsconfig.json是一个JSON文件,添加配置文件后,只需只需 tsc 命令即可完成对整个项目的编译 -
配置选项:
-
include
-
定义希望被编译文件所在的目录 -
默认值:["**/*"] -
示例:
-
exclude
-
extends
-
files
- 严格检查
- strict
- 启用所有的严格检查,默认值为true,设置后相当于开启了所有的严格检查
- alwaysStrict
- 总是以严格模式对代码进行编译
- noImplicitAny
- 禁止隐式的any类型
- noImplicitThis
- 禁止类型不明确的this
- strictBindCallApply
- 严格检查bind、call和apply的参数列表
- strictFunctionTypes
- 严格检查函数的类型
- strictNullChecks
- 严格的空值检查
- strictPropertyInitialization
- 严格检查属性是否初始化
- 额外检查
- noFallthroughCasesInSwitch
- 检查switch语句包含正确的break
- noImplicitReturns
- 检查函数没有隐式的返回值
- noUnusedLocals
- 检查未使用的局部变量
- noUnusedParameters
- 检查未使用的参数
- 高级
- allowUnreachableCode
- 检查不可达代码
- 可选值:
- true,忽略不可达代码
- false,不可达代码将引起错误
- noEmitOnError
- 有错误的情况下不进行编译
- 默认值:false
webpack
Babel
|