λ°λΌμ public
λ° private
λ₯Ό μ¬μ©ν λ κ·μΉμ λ§λ€κ³ λ©μλ/μμ±μ μ λμ¬λ₯Ό λΆμ΄κΈ° μν΄ λ°μ€μ μ¬μ©ν΄μΌ νλ κ²½μ°λ κ³ λ €ν΄μΌ ν©λλ€.
class Foo {
public foo: string;
private bar: number;
private _fn() { ... }
κ°μΈμ μΌλ‘ λλ private
ν€μλλΏλ§ μλλΌ private λ©μλ/μμ±μ λ°μ€μ μ¬μ©νκ³ public
λ₯Ό μ¬μ©νμ§ μκ³ λ¨κ²¨λλ κ²μ ν¬νν©λλ€.
λλ κ·Έκ²μ μ μ μΌλ‘ λμν©λλ€. μ£μ‘ν©λλ€, κ·Έ λΆλΆμ λμ³€μ΅λλ€.
μμν.
κ·Έλ¦¬κ³ κ·νμ λ¬Έμ μλ κ°μ΄λμ μΆκ°ν΄μΌ ν μ€μν κ΄μ μ΄ μλ€κ³ μκ°νλ―λ‘ λ€μ μ΄κ² μ΅λλ€. :)
μ΄ κ°μ΄λμ μ΄λ¦ μ§μ μ λν λΆλΆμ μΆκ°νκ³ μΆμ΅λλ€. λΉμ μ΄ λ¬»λλ€λ©΄ λ€λ₯Έ μ¬λλ λ§μ°¬κ°μ§μΌ κ²μ λλ€.
λ©€λ²κ° μλ κ°μΈ ν¨μ μ΄λ¦μ λ°μ€μ μ¬μ©νλ μ΄μ λ 무μμ λκΉ? κ·Έκ²λ λΉκ³΅κ°λ‘? λλ λ°μ€μ΄ ν¨μ μ체μ λ€λ₯Έ μλ―Έλ₯Ό λΆμ¬ν©λκΉ?
μ΄μ λΉμ μ΄ κ·Έκ²μ μΈκΈ νμΌλ―λ‘ μ, μμ±μ λν΄μλ λ°μ€μ μ νΈν©λλ€. λ€μκ³Ό κ°μ κ²μ κ°μ§ μ μμ΅λλ€.
private _foo: string;
@Input()
set foo(value) { this._foo = value; }
get foo() { return this._foo; }
λ¬Όλ‘ λ 볡μ‘ν setterμ getterλ₯Ό μ¬μ©ν©λλ€.
λ€, μ€ν
κ°μΈμ μΌλ‘ λ°μ€μ μ’μνμ§ μλλ°... νμ§λ§ μλ°μ€ν¬λ¦½νΈμλ μ§μ§ privateλ publicλ μκΈ° λλ¬Έμ ꡬλ³ν μ μλ λ°©λ²μ΄ μμΌλ©΄ λμμ΄ λ§μ΄ λ©λλ€. κ·Έλμ λλ κ·Έκ²λ€μ μ¬μ©νλ€
μ λ°μ΄νΈ: μ λ ES5λ₯Ό μΈκΈνκ³ μμμ΅λλ€... Typescriptλ‘ λ°μ€μ μ¬μ©νμ§ μμ΅λλ€
λ°μ€μ΄ μλ΅λλ©΄ νΌλμ΄ μμ κ²μ΄λΌκ³ μκ°νμλκΉ?
TypeScript/JavaScriptμλ μ§μ ν κ°μΈ λ³μκ° μμΌλ©° ν΄λμ€λ₯Ό μ¬μ©νλ€λ κ²μ ν΄λμ€ μ΄μ μ JavaScriptλ³΄λ€ λ³μλ₯Ό μ¨κΈΈ μ μλ λ₯λ ₯μ΄ ν¨μ¬ λ μ λ€λ κ²μ μλ―Έν©λλ€. μ°λ¦¬λ₯Ό ꡬν '_' κ·μΉλ§ μμ΅λλ€.
'_' κ·μΉμ μ£Όμ κ°μΉλ " λ§μ§μ§ λ§μμμ€! "λΌκ³ μΈμΉλ κ²μ λλ€. JavaScriptλ₯Ό λλ²κΉ ν λ κ³μ μ§νν΄μΌ νλ λͺ¨λ κ²μ λλ€.
μ¬λλ€μ΄ λλ²κ±°μμ something.foo
λ₯Ό λ³Ό λ foo
κ° (a) 곡κ°μ μ΄κ³ λ¬Έμνλμ§ μμλμ§ λλ (b) λΉκ³΅κ°μΈμ§ νμ€ν μ μ μμ΅λλ€. μ μ ν ν΅μ§ μμ΄ μμ μ μ½λμμ μμ λ‘κ² μ°Έμ‘°ν μ μμ΅λλ€. κ·Έ μκ° κ°λ°μλ μ§μ μλ¬΄κ° λ°μν©λλ€.
λ
μκ° _foo
λ³Ό λ νκ³λ₯Ό λ²μ΄λ¬λ€ λ κ²μ μμμΌ ν©λλ€. _foo
λ₯Ό μ°Έμ‘°νλ κ²½μ° _μμ μ μν λΆλ΄_μ
λλ€. κ°λ°μκ° μ κ±°νκ±°λ λμμ λ³κ²½ν λ λλ¬Όμ΄ μμ΄μΌ ν©λλ€.
λ¬Έμμ μνμμ private λ©€λ²λ '_'λ‘ μμν΄μΌ ν©λλ€. private μ λμ¬ '_'λ₯Ό μλ΅ν κ²½μ° μ μνκ² μμ ν©λλ€.
Wardμ κ°μ μ μ°λ¦¬κ° μλ°μ€ν¬λ¦½νΈλ₯Ό λλ²κΉ ν κ²μ΄λΌλ κ²μ λλ€. .... μ΄μν΄ λ³΄μΌ μ μμ§λ§ μμ€λ§΅μ΄ λ무 λ¨κ²κ² μλνμ§ μκ±°λ λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§ λ λͺ ννκ² μ΄ν΄νκΈ°λ₯Ό μνλ κ²½μ° νλ₯ν λ°±μ κ³νμΌλ‘ λ΄ λλ€.
λν μ¬μ© λ°©λ²μ λν νλ₯ν μκ°μ μ§νμ λλ€.
μλκ° λ§ν λͺ¨λ κ².
λν ng2λ₯Ό μ¬μ©νλ©΄ λ€μκ³Ό κ°μ μ°Έμ‘°λ₯Ό κ°μ§ μ μμ΅λλ€.
<my-dir #myDir>
λ΄λΆ μμ±μ μ‘μΈμ€ν©λλ€. κ·Έλ€ μ€ νλμ λ°μ€μ΄ μμΌλ©΄ "λ΄μΌ κ³ μ₯λ μ μμΌλ νμ§ λ§μΈμ"μ μ νΈμ λλ€.
λμν©λλ€. λ λμ κ΅¬λ³ λ°©λ²μ μμ΅λλ€. κ°λ°μλ₯Ό μν μ€λλ νκ΅μ λλ€. νΈμμ± λΉΌκ³ λ λμμ§ μμ΅λλ€.
Angular 2 λ¬Έμ λ μ΄μ angular.io 리ν¬μ§ν 리μ A2 μ€νμΌ κ°μ΄λλ‘ μ΄λν©λλ€.
νμ¬ Angular codeStyle(κ·μΉ 03-04) μ΄ @johnpapa μ μ μκ³Ό λΉκ΅νμ¬ μ¬κΈ°μμ λ³κ²½λμμΌλ©° μ΄μ κ°μΈ λ³μμ λ°μ€μ μ¬μ©νμ§ λ§ κ²μ κΆκ³ ν©λλ€.
Avoid prefixing private properties and methods with an underscore.
- Why? Follows conventional thinking for properties and methods.
- Why? JavaScript lacks a true private property or method.
- Why? TypeScript tooling makes it easy to identify private vs. public properties and methods.
λ°λΌμ μ΄κ²μ μ΄ λ¬Έμ μμ μ μλ κ²κ³Ό λ°λμ λλ€.
μ΄ λ¬Έμ λ₯Ό μ²μ μ½μμ λ μ°¨μ΄μ μ λ°κ²¬νλ€κ³ μκ°νμ§λ§ μ λ°μ΄νΈλ/λ€μ§ν κ·μΉμ νμ΄νμ€ν¬λ¦½νΈ μ½λ© μ§μΉ¨ (μ΄λ¦μ λν κ·μΉ nr 6)κ³Ό μΌμΉν©λλ€.
TypeScript tooling
λ
Όμμ΄ Johnμ νλ€μμ μλ μλ€κ³ μκ°ν©λλ€. κ·Έκ° Gulpμ λ§€μ° λ₯μνκΈ° λλ¬Έμ λλ²κΉ
μ μν΄ μλνλ .map νμΌμ΄ μλ κ²μ μ€νν μ μλ μν©μΌ λΏμ΄λ©° μ½λμμ λ°μ€μ μ¬μ©νμ¬ μμ νλ λμ μ§μ ν΄κ²°ν΄μΌ νλ€κ³ κ²°μ νμ μλ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
TypeScript/JavaScriptμλ μ§μ ν κ°μΈ λ³μκ° μμΌλ©° ν΄λμ€λ₯Ό μ¬μ©νλ€λ κ²μ ν΄λμ€ μ΄μ μ JavaScriptλ³΄λ€ λ³μλ₯Ό μ¨κΈΈ μ μλ λ₯λ ₯μ΄ ν¨μ¬ λ μ λ€λ κ²μ μλ―Έν©λλ€. μ°λ¦¬λ₯Ό ꡬν '_' κ·μΉλ§ μμ΅λλ€.
'_' κ·μΉμ μ£Όμ κ°μΉλ " λ§μ§μ§ λ§μμμ€! "λΌκ³ μΈμΉλ κ²μ λλ€. JavaScriptλ₯Ό λλ²κΉ ν λ κ³μ μ§νν΄μΌ νλ λͺ¨λ κ²μ λλ€.
μ¬λλ€μ΄ λλ²κ±°μμ
something.foo
λ₯Ό λ³Ό λfoo
κ° (a) 곡κ°μ μ΄κ³ λ¬Έμνλμ§ μμλμ§ λλ (b) λΉκ³΅κ°μΈμ§ νμ€ν μ μ μμ΅λλ€. μ μ ν ν΅μ§ μμ΄ μμ μ μ½λμμ μμ λ‘κ² μ°Έμ‘°ν μ μμ΅λλ€. κ·Έ μκ° κ°λ°μλ μ§μ μλ¬΄κ° λ°μν©λλ€.λ μκ°
_foo
λ³Ό λ νκ³λ₯Ό λ²μ΄λ¬λ€ λ κ²μ μμμΌ ν©λλ€._foo
λ₯Ό μ°Έμ‘°νλ κ²½μ° _μμ μ μν λΆλ΄_μ λλ€. κ°λ°μκ° μ κ±°νκ±°λ λμμ λ³κ²½ν λ λλ¬Όμ΄ μμ΄μΌ ν©λλ€.λ¬Έμμ μνμμ private λ©€λ²λ '_'λ‘ μμν΄μΌ ν©λλ€. private μ λμ¬ '_'λ₯Ό μλ΅ν κ²½μ° μ μνκ² μμ ν©λλ€.