본문 바로가기

Typescript15

Typescript | 함수 오버로딩, 사용자 정의 타입가드 함수 오버로딩오버로딩이란 하나의 함수의 매개변수의 개수나 타입에 따라 다르게 동작하도록 만드는 문법/** * 함수 오버로딩 * 같은 함수를 매개변수의 개수나 타입에 따라 * 여러가지 버전으로 만드는 문법 * -> 하나의 함수 func * -> 일단 모든 매개변수는 넘버타입 * -> Ver1. 매개변수가 1개일 때에는 매개변수에 20을 곱한 값을 출력 * -> Ver2. 매개변수가 3개일 때에는 모든 매개변수를 더한 값을 출력 */타입스크립트에서 함수 오버로딩을 구현하려면 먼저 다음과 같이 버전별 오버로드 시그니쳐를 만들어 줘야 한다.// 버전들 -> 오버로드 시그니쳐function func(a: number): void;function func(a: number, b: number, c: number):.. 2024. 11. 2.
Typescript | 함수 타입, 함수 타입 표현식과 호출 시그니처, 호환성 함수 타입함수의 타입을 정의하는 방법다음과 같은 자바스크립트 함수가 있을 때, 이 함수를 다른 사람에게 설명하는 가장 좋은 방법은이 함수가 어떤 매개변수를 받고 어떤 값을 반환 하는지 이야기 하는 것 이다.// 함수를 설명하는 가장 좋은 방법// 어떤 매개변수를 받고, 어떤 결과값을 반환하는지 설명function func(a, b) { return a + b;}TS 에서 함수 정의하는 방법// 매개변수의 타입과 반환 값의 타입을 넣어주면 된다.// 함수의 반환 값은 자동으로 추론되어 생략이 가능하다.function func(a: number, b: number): number { return a + b;}화살표 함수 타입 정의 방법const add = (a: number, b: number): num.. 2024. 11. 2.
Typescript | 타입 추론, 타입 단언, 타입 좁히기, 서로소 유니온 타입 타입추론TS는 타입이 정의되어 있지 않은 변수의 타입을 자동으로 추론한다.이런 기능을 타입 추론 이라고 한다.let a = 10;// number 타입으로 추론 그러나 모든 상황에 타입을 추론하진 않는다.예를 들어 함수의 매개변수 타입은 자동으로 추론할 수 없다.function func(param){ // 오류}이런 경우 암시적으로 any 타입이 추론된다.그러나 엄격한 타입 검사모드 ( tsconfig.json - strict 옵션 true ) 에서는 암시적 any 타입의 추론을 오류로 판단.타입 추론이 가능한 상황1. 변수선언일반적인 변수 선언의 경우 초기값을 기준으로 타입추론이 가능let a = 10;// number 타입으로 추론let b = "hello";// string 타입으로 추론let c .. 2024. 10. 29.
Typescript | 타입 호환성, 대수타입 타입 호환성타입 호환성이란 예를 들어 A와 B 두개의 타입이 존재할 때 A 타입의 값을 B 타입으로 취급해도 괜찮은지 판단하는 것을 의미만약 A 타입의 값이 B 타입의 값으로 취급 되어도 괜찮다면 호환된다고 하고 안된다면 호환되지 않는다고 한다.예를 들어 다음 그림처럼 Number 타입과 Number Literal 타입이 있을 때 서브 타입인 Number Literal 타입의 값을 슈퍼 타입인 Number 타입의 값으로 취급하는 것은 가능반대로는 불가능다음과 같은 코드는 문제가 되지 않는다.let num1: number = 10;let num2: 10 = 10;num1 = num2;Number 타입의 변수 num1을 선언하고 값으로 10을 할당10(Number Literal) 타입의 변수 num2를 선언.. 2024. 10. 29.
Typescript | void, never voidvoid 타입은 아무런 값도 없음을 의미하는 타입보통은 다음과 같이 아무런 값도 반환하지 않는 함수의 반환값 타입을 정의할 때 사용function func2(): void { console.log("hello");}변수의 타입으로도 void의 타입을 지정할 수 있다.그러나 void 타입의 변수에는 undefined 외의 다른 값은 담을 수 없다.이유는 void 타입이 undefined 타입을 포함하는 타입이기 때문let a: void;a = undefined;만약 이때 tsconfig.json에 엄격한 null 검사(strictNullChecks) 옵션을 해제(False)로 설정하면 특별히 이때에는 void 타입의 변수에 null 값도 담을 수 있게 된다.// "strictNullChecks: .. 2024. 10. 25.
Typescript | Enum, any, unknown 열거형 타입 (Enum)Enum은 JS에 존재하지 않고 오직 TS에서만 사용 가능한 특별한 타입이다Enum은 다음과 같이 여러개의 값을 나열하는 용도로 사용한다.// enum 타입// 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입enum Role { ADMIN = 0, USER = 1, GUEST = 2,}const user1 = { name: "이정환", role: Role.ADMIN, //관리자};const user2 = { name: "홍길동", role: Role.USER, // 회원};const user3 = { name: "아무개", role: Role.GUEST, // 게스트};Enum을 쉽게 말하면 상수라고 볼 수 있다.enum의 값을 변수 값으로도 안전하고 .. 2024. 10. 25.