타입에 대한 별칭을 만든다.
type Width = number | string;
type F1 = (a: number, b: string) => number;
타입으로 쓸 수 있다.
let v1: undefined = undefined;
let v2: null = null;
let v3 = 123; // ERROR
비정상 종료 or 무한루프
function f: never {
throw new Error('error');
}
function f: never {
while (true) {}
}
enum 은 객체로 컴파일된다. const enum 은 컴파일 결과에 객체를 남기지 않는다.
enum USER_TYPE {
U1,
U2,
U3,
}
const enum USER_TYPE_C {
UC1,
UC2,
UC3,
}
const a = USER_TYPE.U2;
const b = USER_TYPE_C.UC3;
// 컴파일 이후
(function (USER_TYPE) {
USER_TYPE[USER_TYPE["U1"] = 0] = "U1";
USER_TYPE[USER_TYPE["U2"] = 1] = "U2";
USER_TYPE[USER_TYPE["U3"] = 2] = "U3";
})(USER_TYPE || (USER_TYPE = {}));
var a = USER_TYPE.U2;
var b = 2 /* UC3 */;
인터페이스의 모든 속성 이름을 유니온 타입으로 반환한다.
interface UserData {
name: string;
phone: string;
age: number;
}
let a: keyof UserData // 'name'|'phone'|'age'