function greeter(person: string) { return "Hello, " + person; } function foo(x: T): T { } function foo(a: T[], f: (x: T) => U): U[] { } function foo(this: T[]): U[] { return [] } function foo(x: T, y: U) { } function* foo(amount, interestRate, duration): number { yield amount * interestRate * duration / 12 } class A extends B { constructor(x: number, y: number) { super(x); } public toString() { return super.toString() + " y=" + this.y; } }