const makeCounter = (initialValue) => {
let count = initialValue;
const increase = () => {
return count++;
}
return increase;
}
const makeCounter = (initialValue: number): (() => number) => {
let count = initialValue;
const increase = (): number => {
return count++;
};
return increase;
};
const sum = (a: number, b: number = 2): number => a + b;
console.log(sum(10)); // 12
type KeyValueType = {
[key: string]: string;
};
const makeObject = (key: string, value: string): KeyValueType => ({
[key]: value
});
console.log(makeObject("name", "lee")); // {name: "lee"}
class Person {
constructor(public name: string) {}
sayName(): string {
return this.name;
}
}
const user1 = new Person("Kim");
console.log(user1.sayName()); // Kim
class Person {
constructor(public name: string, public friends: string[] = []) {}
sayName(): string {
return this.name;
}
addFriend(friendName: string): this {
this.friends.push(friendName);
return this; // thisλ₯Ό λ°νν΄μ metod chainingμ΄ κ°λ₯νκ² λ§λ€μ΄μ€λ€.
}
}
const user1 = new Person("Kim");
const friends = user1.addFriend("lee").addFriend("choi").addFriend("park")
.friends;
console.log(friends); // ["lee", "choi", "park"]
λ°°μ΄μ λ€λ£¨λ ν¨μλ₯Ό μμ±ν λλ νμ μ΄ κ³ μ λ ν¨μλ₯Ό λ§λ€κΈ°λ³΄λ€λ μ λλ¦ νμ μ μ¬μ©νλ νΈλ¦¬νλ€.
const arrayLength = <T>(array: T[]) => array.length;
console.log(arrayLength(["str", 2])); // 2
μ λλ¦ ννλ‘ κ΅¬νλ ν¨μλ μμΉμ μΌλ‘ λ€μκ³Ό κ°μ ννλ‘ λͺ μν΄ μ£Όμ΄μΌνλ€. νμ§λ§ μλ΅ν΄λ μμμ νμ μΆλ‘ μ νκΈ° λλ¬Έμ μλ΅μ΄ κ°λ₯νλ€.
const saySomething = <T>(something: T): T => something;
console.log(saySomething<number>(20));
console.log(saySomething<string>("Hello!"));
λ³μμ νμ μ΄ μλ― ν¨μ λν νμ μ΄ μλ€. ν¨μμ νμ μ ν¨μμ μκ·Έλμ²λΌκ³ νλ€.
const sum = (a: number): number => a;
const foo: (name: string, age: number) => number = function (
name: string,
age: number
): number {
return age;
};
foo("lee", 20);
type SumFunc = (num1: number, num2: number) => number;
const bar: SumFunc = function (numb1: number, numb2: number): number {
return numb1 + numb2;
};