function echo(arg:T):T{
return arg
}
const result = echo("str")
function swap(arr:[T,U]):[U,T]{
return [arr[1],arr[0]]
}
const result1 = swap(["str",123])
interface IWidthLength{
length:number;
}
function echoWidthLength(arg:T):T{
console.log(arg.length)
return arg
}
const str = echoWidthLength("str")
const str1 = echoWidthLength({length:10})
const str2 = echoWidthLength([1,2,3])
class Queue {
private data =[];
push(item:T){
return this.data.push(item)
}
pop():T{
return this.data.shift()
}
}
const queue = new Queue()
// queue.push(1)
queue.push("str")
console.log(queue.pop().length)
interface KeyPair {
key:T;
value:U;
}
let kp1 : KeyPair = {"key":123,value:"str"}
interface IPlus{
(a:T,b:T):T
}
function plus(a:number,b:number):number{
return a+b
}
function connect(a:string,b:string):string{
return a+b
}
const a :IPlus = plus
const b :IPlus = connect