자바스크립트, 타입스크립트에는 함수 '표현식(expression)' 과 '문장(statement)'로 함수를 만들 수 있다.
그리고 '표현식' 방식과 '문장' 방식을 다르게 인식한다.
// 자바스크립트에서는 함수문장과 함수표현식을 다르게 인식한다.
function rollDice1(sides: number): number{ return 1; } //문장
const rollDice2 = function (sides: number): number { return 1; } // 표현식
const rollDice3 = (sides: number) => {} // 표현식
|
근데 여기서 함수 선언시 표현식 방식을 사용하는 것이 타입스크립트에서는 더 유리하고 한다.
그 이유는 무엇인가?
a. 함수의 형태를 타입으로 선언하여 함수 표현식에다가 재사용할 수 있다는 점이 유리하다.
type DiceRollFn = (side: number) => number; // 함수의 형태를 타입으로 선언함
const rollDice: DiceRollFn = side => { return 1 }; // 표현식에다가 함수의 타입을 부여
|
b. '문장' 방식으로 같은 유형의 함수를 반복적으로 구현할때, 반복적으로 함수의 형태까지 표현해야 한다. 하지만 표현식 방식으로 기 정의된 타입으로 '재사용' 한다면 수고로움이 줄어들 수 있다.
// 선언 방식으로 함수를 구현할 때, 반복적으로 함수의 형태를 표현하고잇다.
function add(a: number, b: number): number { return a + b;}
function sub(a: number, b: number): number { return a - b;}
function mul(a: number, b: number): number { return a * b;}
function div(a: number, b: number): number { return a / b;}
// 기 정의된 타입을 이용하여 표현식 방식으로 함수를 구현할 때 반복적인 함수의 형태를 코딩하지 않는다.
type Calc = (a:number, b: number) => number;
const add2: Calc = (a, b) => ( a + b );
const sub2: Calc = (a, b) => ( a - b );
const mul2: Calc = (a, b) => ( a * b );
const div2: Calc = (a, b) => ( a / b );
|
'IT' 카테고리의 다른 글
Effective Typescript - 15 - 동적 데이터에 인덱스 시그니처 사용하기 (0) | 2022.01.21 |
---|---|
Effective Typescript - 14 - 타입 연산과 제네릭 사용으로 반복 줄이기. (0) | 2022.01.20 |
Effective Typescript - 13 - 타입과 인터페이스의 차이점 이해하기 (0) | 2022.01.20 |
Node.js와 Browser 에서 실행되는 JS 파일을 공유하고 싶을 때 (0) | 2021.10.23 |
AWS EC2에 node.js 설치 및 node app 구동 (0) | 2021.05.02 |