这是我参与「第五届青训营」伴学笔记创作活动的第3天
typescript
TypeScript是JavaScript 的语法超集,它添加了静态类型,近几年的发展中,也受到诸多开发者的喜爱。Typescript 的社区逐渐壮大,日趋完善。
typescript基础数据类型
const q:string = 'string';
const w:numver = 1;
const e:boolean = true;
const r:null = null;
const t:undefined = undefined
typescript对象类型
interface Text{
//只读属性
readonly jobId:number;
name:string;
sex:'man' | 'woman' | 'other';
age:number;
//可选属性
hobby?:string;
//任意属性
[key:string]:any;
}
typescript函数类型
interface IMult{
(x:number,y:number):number;
}
const mult:IMult = (x,y)=> x*y;
typescript函数重载
typescript数组类型
- 类型+方括号
type IArr1 = number[] - 泛型表示
type IArr2 = Array<string|number|Record<string,number>> - 元祖表示
type IArr3 = [number,number,string,string] - 接口表示
interface IArr4{[key:number]:any}
typescript补充类型
typescript泛型
类型别名&类型断言
联合/交叉类型
- 联合类型:|IA |IB;联合类型表示一个值可以是几种类型之一
- 交叉类型:IA & IB;多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性
类型保护与类型守卫
类型保护
类型守卫
函数返回值类型
- 关键字extends 跟随泛型出现时,表示类型推断,其表达可类比三元表达式
如 T===判断类型?类型A:类型B
type IDelayCall = <T extends () => any>(func: T) =>ReturnType<T> - 关键字infer 出现在类型推荐中,表示定义类型变量,可以用于指代类型
type IReturnType<T extends(...args:any)=>any>=T extends (...args:any)=>infer R ? :any
工程应用
webpack
- 配置webpack loader相关配置
- 配置tsconfig.js文件
- 运行webpack启动/打包
- loader处理ts文件时,会进行编译与类型检查