1. JS에도 있는 타입
let a : undefined = undefined;
let b : null = null;
// 두 타입은 JS에도 있다
가끔 우리는 선택적 타입을 사용하는데 선택적 타입은 undefined
가 될 수 있다
위에서 사용했던 ?
→ 특정 타입
이거나 undefined
거나
1.1. any
→ TS로부터 빠져나오고 싶을 때 쓰는 타입
→ TS에게 바보같은 코딩을 하고 싶다고 허락을 받는다고 생각하면 됨
→ any
를 사용하면 TS로부터 빠져나와 안전장치가 없는 JS로 들어간다
const a : any[] = [1, 2, 3, 4]
const b : any = true
a + b // any를 사용했으므로 잘못된 코드이지만 실행된다
2. TS에만 있는 타입
→ TS에서 중요한 것은 Type Checker와 소통하는 것
2.1. unknown
→ 어떤 타입인지 모를 때 사용
let a : unknown;
unknown
을 사용하면 TS로부터 보호를 받게 된다
→ 어떤 작업을 하려면 해당 변수의 타입을 먼저 확인해야 하는 방식
let a : unknown;
if (typeof a === "number") {
let b = a + 1;
};
if (typeof a === "string") {
let b = a.toUpperCase();
};
// 이와 같이 우선 a의 타입이 무엇인지 부터 확인해야 한다
2.2. void
→ 아무것도 return
하지 않는 함수를 대상으로 사용
function hello() {
console.log("x");
}
보통 void
는 따로 지정하지 않는다. 위와 같이 작성하면 TS가 자동으로 인식하여 hello
함수에 void
타입을 적용한다
function hello() {
console.log("x");
};
const a = hello();
a.toUpperCase(); // 오류 발생
2.3. never
→ 함수가 절대 return
하지 않을 때 발생 (예를 들어 함수에서 exception(예외)이 발생할 때)
function hello(): never {
throw new Error("xxx");
};
// return 없이 오류를 발생시키는 함수
function hello(name:string|number) {
if (typeof name === "string") {
name; // name은 string
} else if (typeof name === "number") {
name; // name은 number
} else {
name; // string과 number를 제외한 나머지 타입의 경우 never 타입
};
};
위의 코드에서 name
인자가 string
이나 number
로 제대로 들어간다면 else
문은 절대 실행되지 않는다
예상 사용 빈도 : void > unknown >>> never(거의 사용하지 않지만 알고 있는 것이 좋음)
3. Call Signature
→ 함수 위에 마우스를 올렸을 때 보게 되는 것
→ 함수를 어떻게 호출해야하는 것인지 알려준다
→ 인자의 타입이랑 함수의 반환 타입을 알려주는 것
const Add = (a:number, b:number) => number; // 이것이 Call Signature
const add:Add = (a, b) => a + b;
- 먼저 함수의 타입을 설명하고
- 코드를 구현
'개발 > TypeScript' 카테고리의 다른 글
8. 타입스크립트(TypeScript) - Concrete Type & Generic Type (0) | 2022.09.04 |
---|---|
7. 타입스크립트(TypeScript) - Overloading & Polymorphism (다형성) (0) | 2022.09.04 |
5. 타입스크립트(TypeScript) - Readonly & Tuple (0) | 2022.09.04 |
4. 타입스크립트(TypeScript) - Alias(별칭) & return 타입 지정 (0) | 2022.09.03 |
3. 타입스크립트(TypeScript) - 타입(Type) (0) | 2022.09.03 |