// generics - like Javafunction identity<T>(arg: T): T {// explicit and (more common) implicit way of using itlet output = identity<string>("myString"); let output = identity("myString"); // generic constraintsfunction loggingIdentity<T extends Lengthwise>(arg:T):T{ // something here}function getProperty<T, K extends keyof T>(obj: T, key: K) { return obj[key];}declare function create<T extends HTMLElement = HTMLDivElement, U = T[]>( element?: T, children?: U): Container<T, U>;