TypeScript λ²μ : 2.3.2
μνΈ
// example.js
var Person = function (firstNameOrPojo, lastName) {
if (typeof firstNameOrPojo === "string") {
this.firstName = firstNameOrPojo;
this.lastName = lastName;
} else {
return new Person(firstNameOrPojo.firstName, firstNameOrPojo.lastName);
}
};
Person.prototype.greet = function greet() {
return `Hello, I am ${this.firstName} ${this.lastName}.`;
};
var fred = new Person({firstName: "Fred", lastName: "Flintstone"});
console.log(fred.greet());
μμλλ λμ :
νΉν λ°ν λ μ νμ΄ νμ μμ μ νκ³Ό μΌμΉνλ€λ μ μ κ³ λ €νλ©΄ tsc
μμ μ€λ₯λ κ²½κ³ μμ΄μ΄ μ½λλ₯Ό μ»΄νμΌ ν κ²μΌλ‘ μμν©λλ€.
JavaScriptμμλ μμ±μ ν¨μκ° κ°μ²΄λ₯Ό λ°ν ν μ μμ΅λλ€. μ΄ μμ
μ΄ μλ£λλ©΄ λ°ν λ κ°μ²΄λ μ 체 new
ννμμ κ²°κ³Όκ°λ©λλ€ ( μ μ°μ°μμ λν μ΄
μ νκ³Ό κ΄λ ¨νμ¬ TypeScript μ»΄νμΌλ¬κ° JavaScript μΈμ΄μ μ΄λ¬ν νΉμ±μ μ§μνλ κ²μ μ£Όμ νλ μ΄μ λ₯Ό μ μ μμ΅λλ€. κ²°κ΅ μ»΄νμΌλ¬λ λͺ
μ μ μΌλ‘ λ°ν λ κ°μ΄ undefined
(μΌλ°μ μΈ κ²½μ°)λ₯Ό λ°ννλ€λ©΄ μμ±μμμ λ°νλλ κ²κ³Ό λμΌν μ νμΈμ§ νμΈν΄μΌν©λλ€. λ€μκ³Ό κ°μ μ΄μ λ‘ μ΄κ²μ΄ μ§μλμ΄μΌνλ€κ³ μκ°ν©λλ€.
μ΄κ²μ μ μ©νκ³ λ리 μ¬μ©λλ JavaScript κΈ°μ μ λλ€.
μμ μ½λλ Node.jsμ λΈλΌμ°μ μμ μ μ€νλ©λλ€.
$ node example.js
Hello, I am Fred Flintstone.
μ€μ νλ :
tsc
μμμ΄ μ½λλ₯Ό νμΈν λ μ€λ₯κ° λ°μν©λλ€.
$ tsc --allowJs --checkJs --outDir ./dist example.js
example.js(8,16): error TS2350: Only a void function can be called with the 'new' keyword.
λ°ννλ λ΄μ©μ κ΄κ³μμ΄ μ νμ μ€μ λ‘ μ¬λ°λ₯΄κ² νμ λ©λλ€. μ»΄νμΌλ¬λ ν¨μλ‘ νΈμΆ λ λ λ°ν μ νμ μ¬μ©νκ³ μμ±μλ‘ μ¬μ©λ λ μΈμ€ν΄μ€ μ νμ μ¬μ©νλ κ²μ μκ³ μμ΅λλ€. μ€λ₯λ .js νμΌμ λν΄ ν΄κ²°ν΄μΌνλ κ²μ λλ€. .ts νμΌμλ ν¨ν΄μ΄ μ¬μ ν νμ©λμ§ μμ΅λλ€ (보μμ μΈ μΈ‘λ©΄μμ μ€λ₯κ° μκΈ° λλ¬Έμ).
+1
νΉν μ΄μ Proxy
κ° μμΌλ―λ‘ ν΄λμ€ μΈμ€ν΄μ€ λμ νλ‘μλ₯Ό μ§μ λ°ννμ¬ κ΅¬νν μμλ λ©μ§ λμμ΄ μμ΅λλ€. κ·Έλ¬λ μμ±μμ λ°ν μ νμ μΆλ‘ νκ±°λ μ§μ ν μ μμΌλ©΄ λΆκ°λ₯ν©λλ€.
λΉμ μ΄ λ£μ μ μλ€λ©΄
get(target, name) {}
κ³Ό
set(target, name, value) {}
ν΄λμ€ μμ±μ λ΄λΆμμ Object / Arrayμ λͺ¨λ μμ±μ λν μμ± ν λΉ μ°μ°μλ₯Ό μ¬μ μνλ €λ©΄ μ ... μλ° μ€ν¬λ¦½νΈκ° λΆμ‘±νμ§ μμ΅λλ€.
[κ·Έλ μ§ μμΌλ©΄ νΈλ€λ¬ ν¨μμ ν¨κ» μ Proxyλ₯Ό λ°ννλ κ²μΌλ‘ μΆ©λΆν©λλ€.]
κ°μ₯ μ μ©ν λκΈ
+1
νΉν μ΄μ
Proxy
κ° μμΌλ―λ‘ ν΄λμ€ μΈμ€ν΄μ€ λμ νλ‘μλ₯Ό μ§μ λ°ννμ¬ κ΅¬νν μμλ λ©μ§ λμμ΄ μμ΅λλ€. κ·Έλ¬λ μμ±μμ λ°ν μ νμ μΆλ‘ νκ±°λ μ§μ ν μ μμΌλ©΄ λΆκ°λ₯ν©λλ€.