literal 과 enum의 차이는 javascript로 변환했을 때 코드의 유무 입니다.
Typescripts Transpiler는 코드를 변환하는 동안 type 확인을 위해서만 사용하기 때문입니다.
다만 대용으로 const를 enum 앞에 붙여 const enum 형식으로 사용하면 타입 확인에만 사용할 수 있습니다.
typescript 예제 코드
// 리터럴 타입
type MyKeyType1 = 'foo' | 'bar' | 'baz';
// enum 타입
enum MyKeyType2 {
FOO = 'foo',
BAR = 'bar',
BAZ = 'baz'
}
// const를 사용한 enum 타입
const enum MyKeyType3 {
FOO = 'foo',
BAR = 'bar',
BAZ = 'baz'
}
var a : MyKeyType1 = "bar"
var b: MyKeyType2 = MyKeyType2.BAR
var c: MyKeyType3 = MyKeyType3.BAR
javascript로 변환했을때 결과
"use strict";
// or with a String Enum
var MyKeyType2;
(function (MyKeyType2) {
MyKeyType2["FOO"] = "foo";
MyKeyType2["BAR"] = "bar";
MyKeyType2["BAZ"] = "baz";
})(MyKeyType2 || (MyKeyType2 = {}));
var a = "bar";
var b = MyKeyType2.BAR;
var c = "bar" /* MyKeyType3.BAR */;
반응형
'Programming Step > Typescript' 카테고리의 다른 글
Index Signature, 제네릭 keyof (0) | 2022.06.29 |
---|---|
typescript express --files 옵션 (0) | 2021.12.17 |
댓글