본문 바로가기

Language

(105)
[Typescript] 함수 선택적 매개변수 function hello(name?:string){ return `Hello, ${name || "world"}`; } function hello2(name = "world"){ return `Hello, ${name}`; } const result = hello(); const result2 = hello("Sam"); const result3 = hello(123); // Error name이 없으면 "world"를 출력하는 코드이다. name은 있어도 되고 없어도 되는 매개변수이므로 뒤에 물음표를 붙인다. 이를 선택적 매개변수라고 부른다. 자바스크립트에서처럼 매개변수의 디폴트 값을 지정하는 것도 가능하다. function hello(age:number|undefined, name:..
[Typescript] 인터페이스(interface) let user:object; user = { name : 'xx', age : 30 } console.log(user.name); // Error object에는 특정 속성 값에 대한 정보가 없기 때문에 위 코드는 에러가 발생한다. 이처럼 프로퍼티를 정해서 객체를 표현하고자 할 때는 인터페이스를 사용한다. interface User { name : string; age : number; } let user : User = { name : 'xx', age : 30 } console.log(user.age); // 30 인터페이스를 활용해 user 객체의 age 속성에 접근하면 에러가 발생하지 않는다. optional, readonly, index type Score = 'A'|'B'|'C'|'F'; i..
[Typescript] 기본 타입 string, number let car:string = 'bmw'; let age:number = 30; Array 배열을 나타내는 두 가지 방법이 있다. 타입 뒤에 [ ]를 붙이거나 제네릭 배열 타입인 Array을 사용한다. let a:number[] = [1, 2, 3]; let a2:Array = [1, 2, 3]; let week1:string[] = ['mon', 'tue', 'wed']; let week2:Array = ['mon', 'tue', 'wed']; 튜플(tuple) 동일하지 않은 타입을 배열로 표현할 수 있다. 인덱스를 사용해 배열의 요소에 접근할 경우, 해당 요소는 올바른 타입이어야 한다. let b:[string, number]; b = ['z', 1]; // OK b = [..
[Typescript] 타입스크립트를 쓰는 이유를 알아보자 브라우저들은 타입스크립트를 이해하지 못한다. 자바스크립트로 변환해서 로드해야 실행할 수 있다. 얼핏 생각해도 번거로울 것 같은데 어떤 장점이 있길래 타입스크립트를 쓰는 것일까? function add(num1, num2){ console.log(num1 + num2); } add(); // NaN add(1); // NaN add(1, 2); // 3 add(3, 4, 5); // 7 add('hello', 'world'); // "helloworld" 위 예시에서 add(1, 2)는 원하는 사용방식이고 결과도 잘 나오지만 나머지는 그렇지 않다. 원하는 결과가 나오지 않아도 자바스크립트는 에러 없이 실행된다. function showItems(arr) { arr.forEach((item) => { con..
[Python] 딕셔너리, 딕셔너리 함수 딕셔너리 - "이름" = "홍길동", "생일" = "월~일" 등으로 구별할 수 있는 대응 관계를 나타내는 자료형 - 연관 배열(Associative array), 해시(Hash) - 딕셔너리는 key와 Value를 한 쌍으로 갖는 자료형 - 리스트나 튜플처럼 순차적으로(sequential) 해당 요솟값을 구하지 않고 key를 통해 Value를 얻음 딕셔너리 구조 딕셔너리명 = {key1:value1, key2:value2, key3:value3, ... } - key와 value 쌍 여러 개가 { }로 둘러싸여 있음 - 요소는 key:value 형태로 이루어져 있고 콤마(,)로 구분 - key는 변하지 않는 값을 사용, value는 변하는 값과 변하지 않는 값 모두 사용 >>> a = {1:'hi'} >..
[Python] 튜플 (인덱싱과 슬라이싱, 연산하기) 튜플 튜플은 몇 가지 점 제외하고는 리스트와 거의 비슷하다. - 리스트 : 대괄호 [ ]로 표현 / 값 생성, 삭제, 수정이 가능 - 튜플 : 소괄호 ( )로 표현 / 값을 바꿀 수 없음 >>> t1 = () >>> t2 = (1, ) >>> t3 = (1, 2, 3) >>> t4 = 1, 2, 3 >>> t5 = ('a', 'b', ('ab', 'cd')) ※ 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 함 → 콤마를 붙이지 않으면 숫자 하나를 변수에 대입하는 것 ※ 괄호( )를 생략 가능 튜플 인덱싱 >>> t1 = (1, 2, 'a', 'b') >>> t1[0] 1 >>> t1[3] 'b' 튜플 슬라이싱 >>> t1 = (1, 2, 'a', 'b') >>> t1[1:] (2, '..
[Javascript] async, await async, await를 사용하면 Promise의 then 함수를 체이닝 형식으로 호출하는 것보다 가독성이 좋아진다. async 함수 앞에 async를 붙이면 항상 Promise를 반환한다. async function getName() { return "Mike"; } console.log(getName()); // Promise {: "Mike"} getName().then((name) => { console.log(name); // "Mike" }); 리턴값이 프로미스이면 리턴한 프로미스를 그대로 사용한다. async function getName() { return Promise.resolve('Tom'); } getName().then((name) => { console.log(name); // ..
[Javascript] 프로미스(Promise) 상점에 가서 물건을 주문하는데 그 물건이 나올 때까지 시간이 걸린다고 가정해보자. 언제 완료되는지 알 수 없고, 물건을 만들다가 실패하는 경우도 있다. 이럴 때 소비자는 10초에 한 번씩 "다 됐나요?"라고 물어본다. 판매자는 "아니요" 또는 "다 됐습니다"라고 대답한다. 실패했다고 말하는 경우도 있다. 그러면 물건을 다시 주문해야한다. 이럴 때 상점에 주문을 하고 상품이 준비되었거나 실패되었으면 알려달라고 하면서 전화번호를 주고 나오는 게 낫다. 상품이 준비되는 동안 다른 작업도 할 수 있다. 상점은 이 번호를 기억했다가 작업이 완료되거나 실패하면 소비자에게 알려준다. 이와 같은 상황에서 사용할 수 있는 것이 Promise이다. 프로미스는 다음과 같이 사용한다. const pr = new Promise..