러닝 타입스크립트를 읽고 요약한 내용입니다.
TIP. 클래스를 많이 사용하는 프로젝트나 클래스 이점을 갖는 프레임워크가 아니라면 클래스 매개변수 속성을 사용하지 않는 것이 좋습니다.
class Enginner {
readonly area: string;
constructor(area: string) {
this.area = area;
console.log(`I work in the ${area} area.`);
}
}
new Enginner("mechanical").area;
class Enginner {
constructor(readonly area: string) {
console.log(`I work in the ${area} area.`);
}
}
new Enginner("mechanical").area;
TIP. ECMA스크립트 버전이 데코레이터 구문으로 승인될 때까지 가능하면 데코레이터를 사용하지 않는 것이 좋습니다. 타입스크립트 데코레이터 사용을 권장하는 앵귤러나 Nest.js와 같은 프레임워크는 공식 문서에서 사용 방법을 안내합니다.
TIP. 자주 반복되는 리터럴 집합이 있고, 그 리터럴 집합을 공통 이름으로 설명할 수 있으며, 열거형으로 전환했을 때 훨씬 더 읽기 쉽지 않은 경우라면 열거형을 사용해서는 안 됩니다.
const StatusCodes = {
InternalServerError: 500,
NotFound: 404,
Ok: 200,
} as const;
StatusCodes.InternalServerError;
enum VisualTheme {
Dark, // 0
Light, // 1
System, // 2
}
"use strict";
var VisualTheme;
(function (VisualTheme) {
VisualTheme[VisualTheme["Dark"] = 0] = "Dark";
VisualTheme[VisualTheme["Light"] = 1] = "Light";
VisualTheme[VisualTheme["System"] = 2] = "System";
})(VisualTheme || (VisualTheme = {}));
enum Direction {
Top = 1,
Right,
Bottom,
Left,
}
"use strict";
var Direction;
(function (Direction) {
Direction[Direction["Top"] = 1] = "Top";
Direction[Direction["Right"] = 2] = "Right";
Direction[Direction["Bottom"] = 3] = "Bottom";
Direction[Direction["Left"] = 4] = "Left";
})(Direction || (Direction = {}));
WARNING. 열거형의 순서를 수정하면 기본 번호가 변경되기 때문에 수정이나 항목을 제거할 때는 주의해야 합니다.
enum LoadStyle {
AsNeeded = "as-needed",
Eager = "eager",
}
"use strict";
var LoadStyle;
(function (LoadStyle) {
LoadStyle["AsNeeded"] = "as-needed";
LoadStyle["Eager"] = "eager";
})(LoadStyle || (LoadStyle = {}));
const enum DisplayHint {
Opaque = 0,
Semitransparent,
Transparent,
}
let displayHint = DisplayHint.Transparent;
"use strict";
let displayHint = 2 /* DisplayHint.Transparent */;
WARNING. 기존 패키지에 대한 DefinitelyTyped 타입 정의를 작성하지 않는 한 네임스페이스를 사용하지 마세요.최신 자바스크립트 모듈 의미 체계와 일치하지 않습니다.
--isolatedModules
, TypeScript의 transpileModule
API, 또는 Babel에서 문제가 발생하면 이 기능과 관련이 있을 수 있습니다. 타입 전용 import ,export 별도의 구문이 존재합니다.import { type TypeOne, value } from "my-example-types";
import type { TypeTwo } from "my-example-types";
import type DefaultType from "my-example-types";
export { type TypeOne, value };
export type { DefaultType, TypeTwo };
import { value } from "my-example-types";
export { value };