1. Type Aliases (별칭)
Type Aliases(타입 별칭)는 TypeScript에서 타입을 새로운 이름으로 지정할 수 있다.
코드를 더 읽기 쉽고 재사용성이 높게 만들 수 있어 주로 복잡한 타입이나 반복되는 타입 정의를 간결하게 표현할 때 유용하다.
type Animal = string | number | undefined;
let 동물 :Animal;
type Age = number
type Player = { //대문자로 만들기
name: string, //별칭 만들기
age?: Age, //타입 지정한걸 가져오는것도 가능
}
//별칭을 그대로 지정해주기
const nemo: Player = {
name: "nemo",
//age: 12
};
//대문자 또는 TAge 이런식으로 변수명 지정
함수에서 별칭을 사용하는 방법
type 함수타입 = (a: string) => number
const 함수: 함수타입 = (a) => {
return 1
}
type Member = {
name: string;
age: number;
plusOne: (x: number) => number;
changeName: () => void;
};
let 회원정보: Member = {
name: "kim",
age: 30,
plusOne(x) {
return x + 1;
},
changeName: () => {
console.log("안녕");
},
};
회원정보.plusOne(1);
회원정보.changeName();
type TcutZero = (str: string) => string;
const cutZero: TcutZero = (str) => {
return str[0] === "0" ? (str = str.slice(1)) : (str = str);
};
type TremoveDash = (str: string) => number;
const removeDash: TremoveDash = (str) => {
return Number(str.replace(/-/g, ""));
};
type T만들함수 = (
str: string,
cutZero: TcutZero,
removeDash: TremoveDash
) => void;
const 만들함수: T만들함수 = (str, cutZero, removeDash) => {
const result = removeDash(cutZero(str));
console.log(result);
};
만들함수("010-1111-2222", cutZero, removeDash) //1011112222
2. Narrowing
TypeScript에서 Narrowing은 타입을 더 구체적으로 지정하는 것을 의미한다.
주로 조건문을 사용하여 변수의 타입을 좁히는 데 사용되며 다양한 방법으로 Narrowing을 수행할 수 있다.
function 내함수(x :number | string){
if (typeof x === 'number') {
return x + 1
}
else if (typeof x === 'string') {
return x + 1
}
else {
return 0
}
}
3. Assertion
TypeScript에서 Type Assertion은 개발자가 컴파일러에게 "나는 이 변수의 타입을 정확히 안다"고 알려주는 것을 의미한다.
일반적으로는 as 키워드를 사용해서 표현한다.
< as 키워드 사용시 특징 >
1. as 키워드는 union type 같은 복잡한 타입을 하나의 정확한 타입으로 줄이는 역할을 수행한다.
(number 타입을 as string 이렇게 바꾸려고 하면 에러)
2. 타입을 임시 해제하는 역할, 실제 코드의 실행결과는 있을 때나 없을 때나 동일하다.
function 내함수(x :number | string){
return (x as number) + 1
}
console.log( 내함수(123) )
Type Assertion은 주로 any 타입이나 다른 타입으로 추론하기 어려운 상황에서 사용된다. as 키워드를 사용하는 것은 개발자 맘대로 타입을 주장하는 것이라 엄격한 타입체크를 안한다는 것이다. 그러므로 남용하면 타입 안정성에 영향을 미칠 수 있으므로, 가능한 TypeScript가 타입을 추론하도록 하는 것이 좋다.
'기술 > TypeScript' 카테고리의 다른 글
여러 타입을 만족하는 하나의 타입, 타입 합치기(Intersection Type, union/&) (1) | 2023.12.19 |
---|---|
readonly 타입 설정, 불변성을 갖도록 만들기 (0) | 2023.12.19 |
Object(객체)에서 여러가지 타입을 지정해야 하는 경우 [key: type] (0) | 2023.12.18 |
기본 타입 정리(primitive types), 한 변수에 여러 타입 지정(union), array 전용 타입(tuple), 선택적 타입(optional), 함수 타입(기본, void, never), class 타입 (1) | 2023.11.26 |
타입스크립트 사용 목적과 설정 방법 (0) | 2023.11.26 |