TypeScript入门教程 | 青训营笔记

39 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第8天

TypeScript发展历程

TypeScript 起源于使用JavaScript开发的大型项目 。由于JavaScript语言本身的局限性,难以胜任和维护大型项目开发。因此微软开发了TypeScript ,使得其能够胜任开发大型项目。

为什么是TypeScript

静态类型

  • 可阅读性增强:基于语法解析TSDoc,ide增强
  • 可维护性增强:在编译阶段暴露大部分的错误

JS的超集

  • 包含兼容所有JS特性,支持共存
  • 支持渐进式引入与升级

基本语法

image.png

对象类型

image.png

//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',
}
复制代码

函数类型

image.png

//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 类型

函数重载

image.png

数组类型

image.png

对象类型知识点

  1. 泛型:泛型指的是在定义函数/接口/类型时,不预先指定具体的类型,而是在使用的时候在指定类型限制一种特性。
  2. 元组:是一种特殊的数组,限定其长度,以及索引类型。
  3. void类型:空类型。表示无赋值。
  4. 枚举类型:支持枚举值到枚举名的正,反向映射。

泛类

泛用接口 & 多泛型

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]