[TypeScript 的发展与基本语法|青训营笔记]

57 阅读3分钟

这是我参与[第五届青训营]伴学笔记创作活动的第3天。 本堂课的重点知识点主要在于认识与了解TypeScript这一门语言的定义、语言写法以及具体的作用.

Typescript入门

什么是TypeScript? JS 动态类型(执行阶段才能进行一个类型的匹配,执行时错误了才会进行爆错) 弱类型语言 TS 静态类型(先走编译流程,错了直接爆错,之后正确了再执行) 弱类型语言(类型转换,例如数字和字符串相加会进行拟类型转换使之能够相加)

TS 静态类型:①可读性增强:基于语法解析TSDoc,ide增强(省对代码的理解时间) ②可维护性增强:在编译阶段暴露大部分错误,多人合作项目中获得更好的稳定性和开发效率 JS的超集:包含于兼容所有JS的特性,支持共存,支持渐进形式引入与升级。

TS基本语法: 类型的定义 const q = 'string' ; 同等于 const q:string = 'string'; 其他同理

对象类型:可设置只读属性(readonly)(只读属性不可再对象初始化外赋值)和可选属性(定义的属性可以不存在)以及任意属性(任意属性:月数所有对象属性都必须是改属性的子类型) 只读就直接例如:name: string; 可读属性例如:hobby?: string; 任意属性:[key: string]:any;

Ts编写约定中一般情况下带大写的I开头进行表示一个类型用于和普通的对象和类进行区分。

any是TS中特有的类型,指任何所有类型。

函数类型 例如: function add(x, y){ return x + y; } const mult = (x, y) => x * y;

例如: interface imult{
(x: number, y: number): number; } const mult: imult = (x, y) => x* y;(建议用这个例子,利用好interface)

例如: ↓指返回值类型 function add(x: number, y: number): number{ return x + y; } const mult: (x: number, y: number) => number = (x, y) => x * y;(这种太长了,一般还是少用吧)

?后加:,表示该参数可以缺省。例如:timestamp?: string ←说明timestamp可缺省
	用好interface进行声明函数。

数组类型 类型 + 方括号 进行表示 (常用) type IArr1 = number[];

泛式表示 (常用) type IArr2 = Array<string | number | Record<string, number>>;

元祖表示 type IArr3 = [number, number, string, string];

接口表示 interface IArr4 { [key: number]:any; } const arr4: IArr4 = ['string', () => null, {}, []]

TS泛型 类型别名(通过type关键字定义某个东西的别名类型)

高级类型 联合交叉类型 联合类型:IA | IB;联合雷星表示一个值可以使多种类型之一 交叉类型: IA & IB; 多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。 例如: type IBookList = Array<{ author: string; } & ({ type: 'history'; range: string; } | { type: 'story'; theme: string; })>

类型保护与类型守卫 当你使用或判断一个类型是一个联合类型时,要消费一个联合类型上的一个方法或key,只能消费两个联合起来类型的公共交集。 联合类型 + 类型保护 = 自动类型判断。

函数返回值类型

工程应用-Webpack、Node