这是我参与「第五届青训营」伴学笔记创作活动的第4天
一.TypeScript与JavaScript对比
JS:
- 动态类型
- 弱类型语言
TS: - 静态类型
- 弱类型语言
动态类型:在执行阶段进行类型匹配
静态类型:先编译再执行,类似Python,Java
弱类型语言:存在隐式转换
TS优势:
二.TS基础语法
变量定义 (:类型)
//JS
const q='string';
//TS
const q:string='string';
对象定义
//只读
readonly jobId:number;
//可选
hobby?:string;
//任意
[key:string]:any;
函数重载
数组定义(一般使用第一种和第二种)
type IArr1=number[];
//泛型
type IArr2=Arry<string | number | Record<string,number>>;
//元组
type IArr3=[number,number,string,string];
//接口
interface IArr4{
[keys:number]:any;
}
泛型定义类型,在使用过程中根据参数确定类型
(感觉有点像C++的模板)
三.联合/交叉类型
联合类型:IA | IB 一个值可以式几个类型之一
交叉类型:IA & IB 多个类型叠加在一起成为一种类型,包含了所需要的所有类型的特性
四.类型保护与类型守卫
类型保护:联合类型的公共区域
类型守卫:定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域
自动类型推断=联合类型+类型保护
function logBook(book:IBookItem){
if(book.type==='history'){
console.log(book.range)
}else{
console.log(book.theme);
}
}
五.函数返回值类型
extends:随着泛型出现时,表示类型推断
infer:出现在类型推荐中,表示定义类型变量,可用于指代类型
六.工程应用
webpack:
- 配置loader相关配置
- 配置tsconfig.js文件
- 运行webpack启动/打包
- loader处理ts文件,进行编译与类型检查
Node.js(使用tsc作为引擎编译):
- 安装Node与npm
- 配置tsconfig.js文件
- 使用npm安装tsc
- 使用tsc运行编译得到js文件