DH의 개발 공부로그
[TypeScript] 타입스크립트 Tuple, Undefined, any, unknown, void, never 본문
TypeScript
[TypeScript] 타입스크립트 Tuple, Undefined, any, unknown, void, never
DeveloperDH 2023. 2. 6. 22:41728x90
타입스크립트
Tuple
Tuple
은 array 생성시 사용합니다. 정해진 갯수의 요소를 가지는 배열을 생성하고
원하는 타입의 순서를 지정하여, 해당 위치에 해당 타입이 필요 합니다.
const array2 : [string, number, boolean] = ['shape', 1, true];
Undefined, Null
let un : undefined = undefined; // undefined는 선택적 타입
let nu : null = null;
Any
타입스크립트에서 Any
는 어떠한 타입이든 허용을 하는 타입으로 특정 값으로 인하여
타입 검사 오류가 발생하는 것을 원하지 않을 때 사용할 수 있습니다.
즉 , 이말은 타입의 안정성이 지켜지지 않는 것이고 타입스크립트에서 빠져나온다고 볼 수도 있습니다.
그러므로 신중하게 사용해야 합니다.
타입이 지정되지 않은 값에 대하여 문맥으로부터 그 타입을 추론해낼 수 없다면,
기본으로 설정이 되는 타입값입니다.
const c : any[] = [1, 2, 3];
const d : any = true;
console.log(c + d); // 오류 없이 정상적으로 실행
// output> 1,2,3true
Unknown
Unknown
은 알 수 없는, 모른다
라는 단어의 뜻처럼 타입을 미리 알지 못할 때 사용됩니다.Any
와 동일하게 Unknown
은 모든 값을 허용하지만, 할당된 값이 어떤 타입인지 모르기 때문에
함부로 프로퍼티에 접근하거나 연산등등 함부로 작업을 할 수 없습니다.
그래서 Any
보다 더 안전합니다.Unknown
을 사용할 때는 type check가 필요합니다.
let data : unknown;
if (typeof data === 'number') {
let sum = data + 1;
};
if (typeof data === 'string') {
let a = data.toUpperCase();
};
Void
Void
는 return 값을 반환하지 않는 함수의 리턴 타입으로 undefined를 반환합니다.
function hello1() : void {
console.log('x')
}
// 보통 반환값이 없을때는 void 생략이 가능
function hello2() {
console.log('x')
}
Never
Never
은 항상 오류를 출력하거나 리턴 값을 절대로 내보내지 않음을 의미합니다.
반환 타입에서는 해당 함수가 예외를 발생시키거나, 프로그램 실행을 종료함을 의미하기도 합니다.
function error() : never {
throw new Error("zzz")
}
function temp(name:string|number) {
if (typeof name === "string"){
name // type : string
} else if (typeof name === "number"){
name // type : number
} else {
name // type : never
// 정상적으로 인자가 전달이 되면 마지막 else로 올 수가 없기 때문에 never
}
참고
728x90
'TypeScript' 카테고리의 다른 글
[TypeScript] 타입스크립트 클래스 - Classes (0) | 2023.02.09 |
---|---|
[TypeScript] 타입스크립트 Call Signatures와 오버로딩 알아보기! (0) | 2023.02.08 |
[TypeScript] 타입스크립트 다형성(Polymorphism) - 제네릭(Generic) (0) | 2023.02.07 |
[TypeScript] 타입스크립트 기본 타입 선언 및 Optinal Type, Function, Readonly (0) | 2023.02.03 |
[TypeScript] 타입스크립트 시작하기! (2) | 2023.02.03 |
Comments