第五课:泛型;

122 阅读1分钟

申明定义的时候不指定类型,在使用再传递具体类型,不确定类型结果的时候使用;

1.常用简单列子:

// 普通类型:
function createNumberArray (length: number, value: number): number[] {
    // length为number类型,不具备Array的fill方法,所以先指定length为泛型为Array<number>;
    return Array<number>(length).fill(value);
}
createNumberArray(4, 8)

// 泛型:适用不同类型的不同返回;
function createdArray <T> (length: number, value: T): T[] {
    return Array<T>(length).fill(value);
}

createdArray(3, 'P');
createdArray(4, 6);

2.泛型约束:让泛型在某个范围内;

// 未约束时:
function a <T>(x: T): void {
    console.log(x.length); // 报错,因为不确定T使用时是否会有length属性;
}

// 约束时:
interface LengthWise {
    length: number
}
function a <T extends LengthWise>(x: T): void {
    console.log(x.length);
}
a('aaa');
a(111); // 编译时提示报错,数字没有length属性;