Typescript: μƒμ„±μž ν•¨μˆ˜μ—μ„œ λ°˜ν™˜ κ°’ 지원

에 λ§Œλ“  2017λ…„ 05μ›” 19일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: microsoft/TypeScript

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 (일반적인 경우)λ₯Ό λ°˜ν™˜ν–ˆλ‹€λ©΄ μƒμ„±μžμ—μ„œ λ°˜ν™˜λ˜λŠ” 것과 λ™μΌν•œ μœ ν˜•μΈμ§€ ν™•μΈν•΄μ•Όν•©λ‹ˆλ‹€. λ‹€μŒκ³Ό 같은 이유둜 이것이 μ§€μ›λ˜μ–΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

  1. TSλŠ” JS의 μƒμœ„ 집합이라고 μ£Όμž₯ν•©λ‹ˆλ‹€.
  2. 이것은 μœ μš©ν•˜κ³  널리 μ‚¬μš©λ˜λŠ” 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.
Bug Fixed

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

+1

특히 이제 Proxy κ°€ μžˆμœΌλ―€λ‘œ 클래슀 μΈμŠ€ν„΄μŠ€ λŒ€μ‹  ν”„λ‘μ‹œλ₯Ό 직접 λ°˜ν™˜ν•˜μ—¬ κ΅¬ν˜„ν•  μˆ˜μžˆλŠ” 멋진 λ™μž‘μ΄ μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μƒμ„±μžμ˜ λ°˜ν™˜ μœ ν˜•μ„ μΆ”λ‘ ν•˜κ±°λ‚˜ 지정할 수 μ—†μœΌλ©΄ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

λ°˜ν™˜ν•˜λŠ” λ‚΄μš©μ— 관계없이 μœ ν˜•μ€ μ‹€μ œλ‘œ μ˜¬λ°”λ₯΄κ²Œ νŒŒμ•…λ©λ‹ˆλ‹€. μ»΄νŒŒμΌλŸ¬λŠ” ν•¨μˆ˜λ‘œ 호좜 될 λ•Œ λ°˜ν™˜ μœ ν˜•μ„ μ‚¬μš©ν•˜κ³  μƒμ„±μžλ‘œ μ‚¬μš©λ  λ•Œ μΈμŠ€ν„΄μŠ€ μœ ν˜•μ„ μ‚¬μš©ν•˜λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. 였λ₯˜λŠ” .js νŒŒμΌμ— λŒ€ν•΄ ν•΄κ²°ν•΄μ•Όν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. .ts νŒŒμΌμ—λŠ” νŒ¨ν„΄μ΄ μ—¬μ „νžˆ ν—ˆμš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ (보수적 인 μΈ‘λ©΄μ—μ„œ 였λ₯˜κ°€ 있기 λ•Œλ¬Έμ—).

+1

특히 이제 Proxy κ°€ μžˆμœΌλ―€λ‘œ 클래슀 μΈμŠ€ν„΄μŠ€ λŒ€μ‹  ν”„λ‘μ‹œλ₯Ό 직접 λ°˜ν™˜ν•˜μ—¬ κ΅¬ν˜„ν•  μˆ˜μžˆλŠ” 멋진 λ™μž‘μ΄ μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μƒμ„±μžμ˜ λ°˜ν™˜ μœ ν˜•μ„ μΆ”λ‘ ν•˜κ±°λ‚˜ 지정할 수 μ—†μœΌλ©΄ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

당신이 넣을 수 μžˆλ‹€λ©΄
get(target, name) {}
κ³Ό
set(target, name, value) {}
클래슀 μƒμ„±μž λ‚΄λΆ€μ—μ„œ Object / Array의 λͺ¨λ“  속성에 λŒ€ν•œ 속성 ν• λ‹Ή μ—°μ‚°μžλ₯Ό μž¬μ •μ˜ν•˜λ €λ©΄ 음 ... μžλ°” μŠ€ν¬λ¦½νŠΈκ°€ λΆ€μ‘±ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
[그렇지 μ•ŠμœΌλ©΄ ν•Έλ“€λŸ¬ ν•¨μˆ˜μ™€ ν•¨κ»˜ μƒˆ Proxyλ₯Ό λ°˜ν™˜ν•˜λŠ” κ²ƒμœΌλ‘œ μΆ©λΆ„ν•©λ‹ˆλ‹€.]

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰