TypeScript入门 | 青训营笔记

41 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第4天

一.TypeScript与JavaScript对比

JS:

  • 动态类型
  • 弱类型语言
    TS:
  • 静态类型
  • 弱类型语言

动态类型:在执行阶段进行类型匹配
静态类型:先编译再执行,类似Python,Java

弱类型语言:存在隐式转换

TS优势:

屏幕截图 2023-01-19 100231.png


二.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文件