π€ Chapter 8. νμ μ€ν¬λ¦½νΈλ‘ λ§μ΄κ·Έλ μ΄μ νκΈ°
π₯ μμ΄ν 58. λͺ¨λ μλ°μ€ν¬λ¦½νΈλ‘ μμ±νκΈ°β
ECMAScript λͺ¨λ μ¬μ©νκΈ°β
ES2015λΆν°λ μν¬νΈμ μ΅μ€ν¬νΈλ₯Ό μ¬μ©νλ ECMAScript λͺ¨λμ΄ νμ€μ΄ λμμ΅λλ€. λ§μ½ λ§μ΄κ·Έλ μ΄μ λμμΈ μλ°μ€ν¬λ¦½νΈ μ½λκ° λ¨μΌ νμΌμ΄κ±°λ λΉνμ€ λͺ¨λ μμ€ν μ μ¬μ© μ€μ΄λΌλ©΄ ES λͺ¨λλ‘ μ ννλ κ²μ΄ μ’μ΅λλ€. ES λͺ¨λ μμ€ν μ νμ μ€ν¬λ¦½νΈμμλ μ λμνλ©°, λͺ¨λ λ¨μλ‘ μ νν μ μκ² ν΄ μ£ΌκΈ° λλ¬Έμ μ μ§μ λ§μ΄κ·Έλ μ΄μ μ΄ μνν΄μ§λλ€.
// a.ts
import * as b from './b';
// b.ts
export const name = 'Module B';
νλ‘ν νμ λμ ν΄λμ€ μ¬μ©νκΈ°β
λ§μ΄κ·Έ λ μ΄μ νλ €λ μ½λμμ λ¨μν κ°μ²΄λ₯Ό λ€λ£° λ νλ‘ν νμ μ μ¬μ©νκ³ μλ€λ©΄ ν΄λμ€λ‘ λ°κΎΈλ κ²μ΄ μ’μ΅λλ€.
class Person {
first: string;
last: string;
constructor(first: string, last: string) {
this.first = first;
this.last = last;
}
getName() {
return this.first + ' ' + this.last;
}
}
const marie = new Person('Marie', 'Curie');
const personName = marie.getName();
var
λμ let
/const
μ¬μ©νκΈ°β
μλ°μ€ν¬λ¦½νΈ var
ν€μλμ μ€μ½ν κ·μΉμ λ¬Έμ κ° μλ€λ κ²μ λ리 μλ €μ§ μ¬μ€μ
λλ€. var
λμ let
κ³Ό const
λ₯Ό μ¬μ©νλ©΄ μ λλ‘ λ λΈλ‘ μ€μ½ν κ·μΉμ κ°μ§λ©°, κ°λ°μλ€μ΄ μΌλ°μ μΌλ‘ κΈ°λνλ λ°©μμΌλ‘ λμν©λλ€.
for(;;)
λμ for-of
λλ λ°°μ΄ λ©μλ μ¬μ©νκΈ°β
λͺ¨λ μλ°μ€ν¬λ¦½νΈμμλ for-of
루νκ° μ‘΄μ¬ν©λλ€.
for (const el of array) {
// ...
}
for-of
루νλ μ½λκ° μ§§κ³ μΈλ±μ€ λ³μλ₯Ό μ¬μ©νμ§λ μκΈ° λλ¬Έμ μ€μλ₯Ό μ€μΌ μ μμ΅λλ€. μΈλ±μ€ λ³μκ° νμν κ²½μ°μ forEach
λ©μλλ₯Ό μ¬μ©νλ©΄ λ©λλ€.
array.forEach((ei, i) => {
// ...
});
ν¨μ ννμλ³΄λ€ νμ΄ν ν¨μ μ¬μ©νκΈ°β
this
ν€μλλ μΌλ°μ μΈ λ³μλ€κ³Όλ λ€λ₯Έ μ€μ½ν κ·μΉμ κ°μ§κΈ° λλ¬Έμ, μλ°μ€ν¬λ¦½νΈμμ κ°μ₯ μ΄λ €μ΄ κ°λ
μ€ νλμ
λλ€. μΌλ°μ μΌλ‘λ this
κ° ν΄λμ€ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νλ κ²μ κΈ°λνμ§λ§ λ€μ μμ μ²λΌ μμμΉ λͺ»ν κ²°κ³Όκ° λμ€λ κ²½μ°λ μμ΅λλ€.
class Foo {
method() {
console.log(this);
[1, 2].forEach(function(i) {
console.log(this);
});
}
}
const f = new Foo();
f.method();
// strict λͺ¨λμμ Foo, undefined, undefinedλ₯Ό μΆλ ₯ν©λλ€.
// non-strict λͺ¨λμμ Foo, window, window (!)λ₯Ό μΆλ ₯ν©λλ€.
λμ νμ΄ν ν¨μλ₯Ό μ¬μ©νλ©΄ μμ μ€μ½νμ this
λ₯Ό μ μ§ν μ μμ΅λλ€.
class Foo {
method() {
console.log(this);
[1, 2].forEach(i => {
console.log(this);
});
}
}
const f = new Foo();
f.method();
// νμ Foo, Foo, Fooλ₯Ό μΆλ ₯ν©λλ€.
μ»΄νμΌλ¬ μ΅μ
μ noImplicitThis
(λλ strict
)λ₯Ό μ€μ νλ©΄, νμ
μ€ν¬λ¦½νΈκ° this
λ°μΈλ© κ΄λ ¨λ μ€λ₯λ₯Ό νμν΄ μ£Όλ―λ‘ μ€μ νλ κ²μ΄ μ’μ΅λλ€.
λ¨μΆ κ°μ²΄ ννκ³Ό ꡬ쑰 λΆν΄ ν λΉ μ¬μ©νκΈ°β
const x = 1, y = 2, z = 3;
const pt = { x, y, z };
const obj = {
onClickLong: function(e) {
// ...
}
onClickCompact(e) {
// ...
}
}
λ¨μΆ κ°μ²΄ ννμ λ°λλ κ°μ²΄ ꡬ쑰 λΆν΄μ λλ€.
const { props } = obj;
const { a, b } = props;