// generics - like Java
function identity<T>(arg: T): T {
// explicit and (more common) implicit way of using it
let output = identity<string>("myString");
let output = identity("myString");
// generic constraints
function 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>;