2024.10.27
일반적으로 타입스크립트 코드에서 모든 타입 정보를 제거하면 자바스크립트가 되지만, 열거형, 매개변수 속성, 트리플 슬래시 임포트, 데코레이터는 타입 정보를 제거한다고 자바스크립트가 되지는 않습니다.
타입스크립트의 역할을 명확하게 하려면, 열거형, 매개변수 속성, 트리플 슬래시 임포트, 데코레이터는 사용하지 않는 것이 좋습니다.
자바스크립트와 타입스크립트에서 동작이 다르기 때문에 문자열 열거 형은 사용하지 않는 것이 좋습니다. 열거형 대신 리터럴 타입의 유니온을 사용 하면 됩니다.
매개변수 속성은 타입스크립트의 다른 패턴들과 이질적이고, 초급자에게 생소한 문법이라는 것을 기억해야 합니다.
// 일반적인 패턴
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
}
// 매개변수 속성을 사용한 패터
class Person {
constructor(public name: string) {}
}
트리플 슬래시 임포트와 module
키워드는 호환성을 위해 남아 있을 뿐이며, 이제는 ECMAScript 2015 스타일의 모듈(import
와 export
)을 사용해야 합니다.
namespace foo {
function bar() {}
}
// <reference path=,,other.ts">
foo.bar();
데코레이터는 처음에 앵귤러 프레임워크를 지원하기 위해 추가되었으며 tsconfig
에 experimentalDecorators
속성을 설정하고 사용해야 합니다
데코레이터가 표준이 되기 전에는 타입스크립트에서 데코레이터를 사용하지 않는게 좋습니다.
let k: keyof T
와 for-in
루프를 사용합시다. 함수의 매개변수로 쓰이는 객체에는 추가적인 키가 존재할 수 있다는 점을 명심합시다.const obj = {
one: 'uno',
two: 'dos',
three: 'tres',
};
for (const k in obj) {
const v = obj[k];
// obj에 인덱스 시그니처가 없기 때문에
// 엘리먼트는 암시적으로 'any' 타입입니다.
}
let k: keyof typeof obj; // "one" | "two" | "three" 타입
for (k in obj) {
const v = obj[k]; // 정상
}
Object.entries
를 사용하는 것입니다.타입 | 예시 |
---|---|
EventTarget | window, XMLHttpRequest |
Node | document, Text, Comment |
Element | HTMLElement, SVGElement 포함 |
HTMLElement | <i> , <b> |
HTMLButtonElement | <button> |
DOM
에는 타입 계층 구조가 있습니다. DOM
타입은 타입스크립트에서 중요한 정보이며, 브라우저 관련 프로젝트에서 타입스크립트를 사용할 때 유용합니다.Node
, Element
, HTMLElement
, EventTarget
간의 차이점, 그리고 Event
와 Mouse Event
의 차이점을 알아야 합니다.DOM
엘리먼트와 이벤트에는 충분히 구체적인 타입 정보를 사용하거나, 타입스크립트가 추론할 수 있도록 문맥 정보를 활용해야 합니다.public
, protected
, private
접근 제어자는 타입 시스템에서만 강제될 뿐입니다. 런타임에는 소용이 없으며 단언문을 통해 우회할 수 있습니다. 접근 제어자로 데이터를 감추려고 해서는 안 됩니다.#
키워드를 사용하면 됩니다.