*타입이 정해지지 않았을 때 타입을 변수처럼 전달 할 수 있다.
*generic을 포함하는 함수나 클래스를 부르는 두가지 방법
1 2 3 4 5 6 7 8 | function test<T>(test: T): T{ alert(test); return test; } //string인 'haha'의 형태를 자동 추론하여, <T>=<string>으로 인식한다. test('haha'); //generic을 명시적으로 전달해준다. test<string>('haha'); | cs |
*string literal type : 스트링 리터럴타입이란, 스트링타입의 서브타입의 일종으로 스트링타입에 제약을 하나 더붙여서 특정 문자열만 허가 하도록 하는 형태로 컴파일시 타입체크의 타겟이 된다. string타입의 서브타입이므로 string이 가진 함수에 접근할 수 있다.
이와같은 성질은 number literal type에서도 마찬가지이다.
//string literal type
const eventName1: "click" = "click"; // OK
const eventName2: "click" = null; // OK
const eventName3: "click" = undefined; // OK
// Error: Type '"mouseover"' is not assignable to type '"click"'.
const eventName4: "click" = "mouseover";
// Error: Type '""' is not assignable to type '"click"'.
const eventName5: "click" = "";
const eventName5: "click"|"mouseover"; = "click";
//number literal type
const eventNum1: 3 = 3; // OK
const eventNum2: 3 = null; // OK
const eventNum3: 3 = undefined; // OK
// Error: Type '5' is not assignable to type '3'.
const eventNum4: 3 = 5;
// Error: Type '""' is not assignable to type '"click"'.
const eventNum5: 3 = "";
*keyof 는 인터페이스나 클래스가 지닌 key를 스트링 리터럴 타입의 유니온으로 만들어준다.
'frameworks > typescript' 카테고리의 다른 글
[typescript]decorator (0) | 2018.12.11 |
---|---|
[typescript]iterator (0) | 2018.12.11 |
[typescript]class (0) | 2018.12.07 |
[typescript]interface (0) | 2018.12.06 |
[typescript]type assertion (0) | 2018.12.06 |