function add(arg1: T, arg2: T): T{
return arg1 + arg2;
}
add(1, 2);
add(‘1’, ‘2’);
let addFn: (arg1: T, arg2: T) => T;
addFn = add;
addFn(‘1’, ‘2’);
addFn(1,2);
let addFn2: { (arg1: T, arg2: T): T };
addFn2 = add;
addFn2(‘3’, ‘4’);
addFn2(3, 4);
interface AddFn { (arg1: T, arg2: T): T };
let addFn3: AddFn = add;
addFn3(‘1’, ‘2’);
addFn3(1, 2);
interface AddFn2 { (arg1: T, arg2: T): T };
let addFn4Str: AddFn2 = add;
let addFn4Num: AddFn2 = add;
addFn4Str(‘1’, ‘2’);
addFn4Num(1,2);
interface ILength {
length:number
}
function getLen(arg: T): number{
console.log(arg.length);
return arg.length;
}
function getP<T, K extends keyof T>(obj:T,key:K) {
return obj[key];
}