230609/230804 타입스크립트 range( ) 함수 / 명령형,선언형프로그래밍 / 배열 함수
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를 실행하게 되면 기존 값에서 객체인 값만 출력하게 된다.