const arrayOfNumbers: Array<number> = [1, 1, 2, 3, 5]
const arrayOfString: Array<string> = ['Hello', 'Labas']

//tipai nusistatys pagal turinį
function reverse<T>(array: T[]): T[] {
 return array.reverse()
}

reverse(arrayOfNumbers)
reverse(arrayOfString)

reverse<number>('string') -> bus klaida nes tipai skirtingi

leidzia nauoti funcijas arba objektus skirtingiems duomenu tipams

interface MyInterface {
  transform: <T, F> (a: T) => F
}

keli kintamieji keliu tipų

class Menu<T> {
value: T
}

const a = new Menu<number>()

a.value -> tik number

interface TimeStamp {
  stamp: number
}

fucntion logTimeStamp<T extends TimeStamp>(num: T): T{
  console.log(num.stamp)
  return num
}