这是我参与「第四届青训营 」笔记创作活动的第8天
TypeScript发展历程
TypeScript 起源于使用JavaScript开发的大型项目 。由于JavaScript语言本身的局限性,难以胜任和维护大型项目开发。因此微软开发了TypeScript ,使得其能够胜任开发大型项目。
为什么是TypeScript
静态类型
- 可阅读性增强:基于语法解析TSDoc,ide增强
- 可维护性增强:在编译阶段暴露大部分的错误
JS的超集
- 包含兼容所有JS特性,支持共存
- 支持渐进式引入与升级
基本语法
对象类型
//interface接口属性 只能为对象指定类型。它可以继承。
interface OBj {
// 只读属性: 约束属性不可在对象初始化外赋值
readonly age : number,
name: string,
//只能定义值为 man 或者 wj
sex: 'man' | 'wj',
// 可选属性:定义该属性可以不存在
hobby?: string,
// 任意属性:约束所有对象属性都必须是该属性的子类型
[key:string] : any,
//当类型设置为any时,就取消了类型限制,一般不推荐
}
const bytedancer:OBj = {
name : 'Lin',
age : 18,
sex : 'wj',
}
复制代码
函数类型
//1.提前接口声明
interface method{
//传入x,y,以及返回值都必须是number
(x:number,y:number) : number
}
const mult : method = (x,y) => x * y
//2.声明式实际写法:
function add(x:number,y:number) : number {
return x + y;
}
//3.箭头函数
const mults : (x:number,y:number) => number =(x,y) => x+y
复制代码
如果一个函数没有返回值,应该使用 void 类型
函数重载
数组类型
对象类型知识点
- 泛型:泛型指的是在定义函数/接口/类型时,不预先指定具体的类型,而是在使用的时候在指定类型限制一种特性。
- 元组:是一种特殊的数组,限定其长度,以及索引类型。
- void类型:空类型。表示无赋值。
- 枚举类型:支持枚举值到枚举名的正,反向映射。
泛类
泛用接口 & 多泛型
interface IX<T,U>{
key:T;
val:U;
}
let ix : IX<string,number>= {
key:'asd',
val:124
}
复制代码
泛型类:在new类的时候,传入两个数据类型然后输入值。
class IMan<T,U>{
instance:T;
// private instance : T;
ss:U;
constructor(instance:T,ss:U) {
this.instance = instance;
this.ss = ss;
}
}
let im = new IMan<string,number>('12',12);
复制代码
泛用别名:
type IY<T> = Array<T>;
let sy : IY<number> = [12,14]