TypeScript入门 | 青训营笔记

46 阅读2分钟

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

1.为什么是TypeScript

  • JS与TS

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

    • 可读性增强:基于语法解析TSDoc,ide增强
    • 可维护性增强:在编译阶段暴露大部分错误 => 多人合作的大型项目中,获得更好的稳定性和开发效率
  • JS的超集:

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

2.基本语法

2.1.基础数据类型

/*字符串*/
const q: string = 'string';
/*数字*/
const w: number = 1;
/*布尔值*/
const e: boolean = true;
/*null*/
const r: null = null;
/*undefined*/
const t: undefined = undefined;
  • js包含的数据类型:Boolean、Number、String、Array、Function、Object、Symbol、undefined、null
  • ts新增的数据类型:void、any、never、元组、枚举

2.2.对象类型

const dancer: dancer = {
    id: 123445,
    name: 'name',
    sex: 'man',
    age: 20,
    hobby: 'swimming',
}
​
interface dancer {
    /*只读属性:约束属性不可在对象初始化外复制*/
    readonly id: number;
    name: string;
    sex: 'man' | 'woman' | 'other';
    age: number;
    /*可选属性,定义该属性可以不存在*/
    hobby?: string;
    /*任意属性:约束所有对象属性都必须是该属性的子类型*/
    [key: string]: any;
}
​
/*报错,无法分配到id,因为它是只读属性*/
dancer.id = 12421
/*成功:任意属性标注下可以添加任意属性*/
dancer.plateform = 'data';
/*报错,缺少属性name,hobby可缺省*/
const dancer2: dancer = {
    id: 243,
    sex: 'woman',
    age: 23,
}

2.3.函数类型

function add(x: number, y: number): number {
    return x + y;
}
const mult: (x:number, y: number) => number = (x, y) => x*y;

2.4.函数重载

image.png

2.5.数组类型

/*类型+方括号 表示*/
type IArr1 = number[];
/*泛型表示*/
type IArr2 = Array<string | number | Record<string, number>>;
/*元祖表示*/
type IArr3 = [number, number, string, string];
/*接口表示*/
interface IArr4 {
    [key: number]: any;
}
​
const arr1: IArr1 = [1,2,3,4,5,6];
const arr2: IArr2 = [1,2,'3','4',{a:1}];
const arr3: IArr3 = [1,2,'3','4'];
const arr4: IArr4 = ['string',()=> null, {}, []];

2.6.补充类型

image.png

2.7.泛型

image.png