4/21 Today I Learn

장민우·2021년 4월 21일
0
post-thumbnail

오늘 학습 내용

  • 프로그래머스 mysql - level 3(join) : 4문제 풀었음
  • 타입스크립트 공식문서- 인터페이스
  • 독서 - 후니의 쉽게쓴 네트워크 + 소프트 스킬
  • copy mind 리뉴얼 - 80% 완료

타입스크립트-인터페이스

  • 타입스크립트 컴파일러는 최소한의 필요한 프로퍼티가 있는지와 타입이 맞는지만 검사한다
interface LabeledValue {
    label: string;
}

function printLabel(labelObj: LabeledValue){
	console.log(labelObj)
}

const obj = { size : 10 , label : "Size 10 Object"} 
printLabel(obj) // { size : 10, label : "Size 10 Object" }

printLabel 함수에서 label 프로퍼티가 string 타입인지만 확인하기 때문에 size란 추가 프로퍼티가 존재해도 오류를 검출하지 않는다.

객체 리터럴

printLabel({ size: 10, label: "Size 10 Object" }) // 오류 ...!

위와 같은 형태인 객체 리터럴로 인수를 전달할 때 초과 프로퍼티 검사를 받게된다.

검사를 피하기 위한 방법 - 타입 단언

interface LabelType{
  label: string;
}
printLabel({ size: 10, label: "Size 10 Object" } as LabelType)

객체 리터럴 뒤에 as와 인터페이스를 사용하면 기존에 객체 리터럴 형식에 오류가 나왔던 부분을 제거 가능.

그러나 인터페이스에 정의된 프로퍼티 이외의 값이 추가될 거라고 확신한다면 아래와 같이 문자열 인덱스 서명을 추가하는 것이 더 나은 방법

interface LabelType{
  label: string;
  [propName : string] : any;
}
printLabel({ size: 10, label: "Size 10 Object" } as LabelType)

readonly vs const

변수는 const
프로퍼티는 readonly

프로그래머스(mysql-Level3)

  • 어떠한 순위를 매겨 정해진 수만 출력하고 싶다면
ORDER BY ~~~ LIMIT ~~ 
  • WHERE절에만 조건을 작성할 수 있는게 아니라 ORDER BY에서도 조건을 작성할 수 있다는점 인지.

  • from 이나 join 뒤에 as를 활용해 가독성 높이기

SELECT ins.animal_id, ins.datetime FROM animal_ins as ins;
  • 관계 테이블에서 참고할만한 자료

출처: https://blog.edit.kr/entry/Left-join-and-Left-outer-join-in-SQL-Server

0개의 댓글