TypeScript泛型接口(三)

以使用接口的方式来定义一个函数需要符合的形状:

interface SearchFunc {
  (source: string, subString: string): boolean;
}


let mySearch: SearchFunc = (source: string, subString: string) => {
    return source.search(subString) !== -1;
}

当然也可以使用含有泛型的接口来定义函数的形状:

interface CreateArrayFunc {
    <T>(length: number, value: T): Array<T>;
}


let createArray: CreateArrayFunc = <T extends {}>(length: number, value: T): Array<T> => {
    let result: T[] = [];
    for (let i = 0; i < length; i++) {
        result[i] = value;
    }
    return result;
}


createArray(3, 'x'); // ['x', 'x', 'x']

进一步,我们可以把泛型参数提前到接口名上:

interface CreateArrayFunc<T> {
    (length: number, value: T): Array<T>;
}


let createArray: CreateArrayFunc<any>;
createArray = function<T>(length: number, value: T): Array<T> {
    let result: T[] = [];
    for (let i = 0; i < length; i++) {
        result[i] = value;
    }
    return result;
}


createArray(3, 'x'); // ['x', 'x', 'x']

注意,此时在使用泛型接口的时候,需要定义泛型的类型。


   转载规则


《TypeScript泛型接口(三)》 浅夏晴空 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
React+TypeScript+webpack4多入口配置 React+TypeScript+webpack4多入口配置
资源 React-16.8.* react-router-dom-4.3.* TypeScript-3.5.* webpack-4.* eslint-5.16.* 项目目录├── dist # 打包结果目录 │ ├── demo1 /
2019-07-29
下一篇 
TypeScript类与接口 TypeScript类与接口
概念虽然 JavaScript 中有类的概念,但是可能大多数 JavaScript 程序员并不是非常熟悉类,这里对类相关的概念做一个简单的介绍。 类(Class):定义了一件事物的抽象特点,包含它的属性和方法 对象(Object):类的实
2019-07-20
  目录