함수
// 기명 함수
function plus(x, y){
// return x + y;
};
// 익명 함수
let myPlus = function (x, y) { return x + y };
const z = 100;
function plus(x, y){
return x + y + z;
};
// 타입을 따로 지정하지 않고, 매개 변수에 z가 없으므로 위 코드는 에러가 발생
함수의 타이핑
각 파라미터와 함수 자신의 반환될 타입을 지정
function Add(x: number, y: number): number {
return x + y
};
let myAdd = function (x: number, y: number): number {
return x + y
};
console.log(Add(5, 6));
console.log(myAdd(2, 4));
함수 타입 작성
함수의 타입은 매개변수의 타입과 반환 타입이 있다.
전체함수 타입을 작성하기 위해 두가지 타입이 필요하다.
let Sub: (x: number, y: number) => number =
function(x: number, y: number): number { return x - y; };
let mySub: (baseValue: number, increment: number) => number =
function(x: number, y: number): number { return x - y; };
console.log(Sub(5, 6));
console.log(mySub(2, 4));
타입의 추론
타입을 명시적으로 지정하지 않아도, 컴파일러가 코드의 문맥과 구조를 분석하여
변수, 함수 반환값, 매개변수 등의 타입을 자동으로 결정하는 기능
//1. 기본 타입 추론
let num = 42; // number로 추론
let str = "Hello, TypeScript"; // string으로 추론
let Done = false; // boolean으로 추론
console.log(num, str, Done);
// 2. 함수 반환값 타입 추론
function div(a: number, b: number) {
return a / b; // 반환값은 number로 추론
}
console.log(div(6, 2));
// 3. 컨텍스트 기반 타입 추론
const numbers = [1, 2, 3];
numbers.forEach((num) => {
console.log(num); // num은 number로 추론
});
// 4. 객체와 배열의 타입 추론
const user = {
name: "Alice",
age: 25,
}; // { name: string; age: number }
const colors = ["red", "green", "blue"]; // string[]
console.log(user);
console.log(colors);
타입의 추론 한계와 해결방안
// 1. 명확한 타입 지정
// 타입 선언 전
let Value; // any로 추론
Value = 10; // number 할당 가능
Value = "hello"; // string도 할당 가능
// 콘솔 출력시 제일 나중에 할당한 hello출력
// 명시적으로 타입 선언
let specificValue: string;
specificValue = "hello"; // string만 할당 가능
console.log(Value, specificValue);
// 2. 유니온 타입
let mixed = Math.random() > 0.5 ? "hello" : 42; // string | number
console.log(mixed);
선택적 매개변수와 기본 매개변수
// 선택적 매개변수를 원한다면 매개변수 이름 끝에 ? 를 붙여서 선언
function buildName(firstName: string, lastName?: string) {
return firstName + " " + lastName;
}
// 기본값은 함수 선언 시 = 뒤에 선언
// undefined에 전달
function buildName(firstName: string, lastName = "Charlie") {
return firstName + " " + lastName;
}
let result1 = buildName("Bob"); // 오류, 너무 적은 매개변수
let result2 = buildName("Bob", undefined); // 오류, 너무 적은 매개변수
let result3 = buildName("Bob", "Adams", "Sr."); // 오류, 너무 많은 매개변수
let result4 = buildName("Bob", "Adams"); // 정확함
console.log(result1, result2, result3, result4);
// result1은 Bob undefined,
// result2는 Bob Adams값이 나오지만 두가지의 매개변수만 필요하기 때문에 세번째 매개변수인 Sr.은 출력되지 않는다.'TS' 카테고리의 다른 글
| 리터럴 타입 (0) | 2024.11.26 |
|---|---|
| 함수(Function)[2] (0) | 2024.11.25 |
| Interface(3) (0) | 2024.11.19 |
| Interface (2) (0) | 2024.11.18 |
| Interface (1) (0) | 2024.11.15 |