TypeScript| 青训营笔记

127 阅读2分钟

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

TypeScript入门

基本语法

基本数据类型

  1. /字符串/ const q = 'string '; const q: string = 'string ' ;
  2. /数字/ const w = 1; const w: number = 1;
  3. /布尔值/ const e = true; const e: boolean = true;
  4. /null/ const r = null; const r: null = null;
  5. /undefined/ const t = undefined; const t: undefined = undefined;

对象类型

    const bytedancer: IBytedancer = {
        jobId: 9303245,
        name: "Lin',
        sex: 'man ' ,
        age: 28,
        hobby: 'swimming " ,
    }
    interface IBytedancer {
        //只读属性:约束属性不可在对象初始化外赋值
        readonly jobId: number;
        name: string;
        sex: 'man'|'woman'| 'other';
        age: number;
        //可选属性:定义该属性可以不存在
        hobby?: string;
        //任意属性:约束所有对象属性都必须是该属性的子类型
        [key: string]: any;
    }

函数类型

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

interface IMult {
    (x: number, y: number) : number;
}
const mult: IMult =(x, y)→>*y;

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

数组类型

/「类型+方括号」表示/

type IArr1 = number[];

/泛型表示/

type IArr2 = Array<string | number | Record<string,number>>;

/元祖表示/

type IArr3 = [numbernumber,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,i,[];

TypeScript补充类型

/空类型,表示无赋值/

type IEmptyFunction = (=> void;

/任意类型,是所有类型的子类型/

type IAnyType = any;

/枚举类型:支持枚举值到枚举名的正、反向映射/

enum EnumExample {
    add = '+',
    mult = '*',
}

EnumExample [ 'add ' ] == '+';
EnumExample['+'] === 'add ' ;

enum ECorlor { Mon,Tue,wed,Thu,Fri,Sat,Sun };
ECorlor ['Mon' ] == 0;
ECorlor[0] =s='Mon ' ;

/泛型/

type INumArr = Array<number>;

TypeScript泛型

function getRepeatArr(target){
    return new Array ( 100).fill(target);
}
type IGetRepeatArr = (target: any) -=>any [];

/*不预先指定具体的类型,而在使用的时候再指定类型的一种特性*/type IGetRepeatArrR =<T>(target: T)→>T[];

/泛型接口&多泛型/

interface IX<T,U> {
    key: T;
    val: U;
}

/泛型类/

class IMan<T>{
    instance: T;
}

/泛型别名/

type ITypeArr<T> = Array<T>;

/泛型约束:限制泛型必须符合字符串/

type IGetRepeatStringArr = <T extends string>(target: T) => T[];
const getStrArr: IGetRepeatStringArr = target => new Array(100).fill(target);

/报错:类型"number"的参数不能赋给类型"string"的参数/

getStrArr(123);

/泛型参数默认类型/

type IGetRepeatArr<T = number> = (target: T)=>T[];
const getRepeatArr: IGetRepeatArr = target => new Array(100).fill(target);

/报错:类型"string"的参数不能赋给类型"number"的参数/

getRepeatArr( '123');