官术网_书友最值得收藏!

Generics

In TypeScript, you can define generic functions, interfaces, and classes like in other programming languages. A generic function has type parameters listed in angle brackets:

function reverseAndMerge<T>(arr1: T[], arr2: T[]): T[] {
return arr1.reverse().concat(arr2.reverse());
}

let arr1: number[] = [1, 2, 3];
let arr2: number[] = [4, 5, 6];
let arr = reverseAndMerge(arr1, arr2);

Such generic functions can be defined with generic interfaces as well. The function signature for reverseAndMerge is compatible with the following generic interface:

interface GenericArrayFn<T> {
(arr1: T[], arr2: T[]): T[];
}

let arr: GenericArrayFn<number> = reverseAndMerge;

Note that the generic type parameter list in angle brackets follows the name of the function and interface. This is also true for classes:

class GenericValue<T> {
constructor(private value: T) { }
increment: (x: T) => T;
decrement: (x: T) => T;
}

let genericValue = new GenericValue<number>(5);
genericValue.increment = function (x) {return ++x;};
genericValue.decrement = function (x) {return --x;};
主站蜘蛛池模板: 甘肃省| 秦安县| 延长县| 平潭县| 林甸县| 天长市| 五河县| 武义县| 山丹县| 孟州市| 龙泉市| 于田县| 综艺| 绥阳县| 察雅县| 罗平县| 西峡县| 卓资县| 永兴县| 阳原县| 长顺县| 乐昌市| 桦南县| 红原县| 九台市| 平塘县| 吴桥县| 潢川县| 舟山市| 双柏县| 四平市| 含山县| 余庆县| 西吉县| 陆川县| 华蓥市| 夏河县| 宝山区| 凤城市| 鄂托克旗| 丰顺县|