Typescript

230609/230804 타입스크립트 range( ) 함수 / 명령형,선언형프로그래밍 / 배열 함수

hyerin1201 2023. 6. 9. 16:00

range( ) : 특정 수(값)로 구성된 배열을 생성할 때 사용할 수 있는 함수


**1-100까지의  합 더하기

명령형프로그래밍 : 입력데이터값 설정 => 출력할 수 있는 가공된 함수 사용 => 출력데이터 값 확인

(자바스크립트) (편리함, 세분화 및 커스터마이징이 되지 않음)


선언형프로그래밍 : 직접 입,출력의 값을 선언하여 함수 실행.. //위와 결과값은 같다

프로그래밍을 하기위한 입, 출력 데이터 값을 이원화시킬 수 있고, 이로 인해서 데이터 커스터마이징 및 대규모 프로젝트 진행시 보다 효율적인 디버깅이 가능하다.

(*하이레벨 프로그래밍)

=> Pure Function (순수함수) 

=> 변수선언시 const 사용 지향

=> readonly


**1-100까지중 홀수의 값만 추출해서 더하기

명령형프로그래밍


선언형프로그래밍 (filter 사용)

 


**1-100까지중 의 값만 추출해서 더하기

명령형프로그래밍


선언형프로그래밍


**1-100까지의 제곱의 합

명령형프로그래밍


선언형프로그래밍 (map)


**map , reduce, filter 메서드 체이닝 방식

타입스트립트를활용한 배열의 map, reduce, filter 예제


**filter 함수의 타입정의...

 

 


** 순수함수

배열의 타입을 정의하기 위해 선언형 프로그래밍방식을 배움 ->

선언형 프로그래밍 방식으로 할때 순수함수 인 경우에만 타입 정의가 가능함...

순수함수란?

-함수 실행문안에 입.출력 코드가 없는 것 ( prompt( ) / console.log( ) X)

-함수 실행문안에 매개변수가 변경되면 안됨..( let 키워드.. X / const && readonly 로 써야함..)

-함수 실행문안에 비동기 코드가 있으면 안됨( callback , promise 객체 X)

-함수 실행문안에 정적타입의 변수 존재하면 안됨. (static X)


 

deep-copy(깊은복사) 와 shallow-copy(얕은복사)

*타입스크립트에서는 number, boolean 타입은 깊은 복사로 형태로 동작하는데 반해 객체와 배열 타입에서는 얕은 복사 형태로 동작한다.

배열의 경우 다음과 같이 전개연산자를  사용하여 얕은복사 -> 깊은복사 형태로 바꿔서 사용 가능하다.


*원본 배열 데이터를 손상시키지 않고, 깊은 복사 하기.

 

 

**선언형 방식으로 만든 함수 로 원본데이터 손상하지않고 변경된 값만 가져오기.

pureDelete( array, cb ) =>  

배열과 콜백함수 두개의 인자값을 가진다.

{ array.filter( (val, index) => cb(val, index) == false); }

실행문은 인자값으로 받은 배열객체에 filter 함수를 적용.

filter 함수는 val, index 인자값을 받아 pureDelete의 인자값인 cb 함수를 실행하고.

false의 값을 가진 데이터만 array 객체에 새롭게 담는다. 

 

따라서, mixedArray 객체 안에는 [ 배열, 객체, 객체, 배열 ] 이 포함되어있고

pureDelete를 실행하게 되면 기존 값에서 객체인 값만 출력하게 된다.