-
Next.js
타입스크립트의 잉여속성검사(Excess Property Checks)
1. 핵심개념객체 리터럴을 변수에 바로 대입하거나 인자로 넘길 때, 그 타입에 정의되지 않은 속성이 포함되면 오류가 발생한다.하지만 일반 변수에 저장 후 넘기면 오류가 발생하지 않는다.interface User { name: string; age: number;}const u: User = { name: "Alice", age: 30, email: "example@example.com"} 위의 코드에서 u의 email User 타입에 없으므로 에러가 발생한다. 하지만 아래와 같은 예시처럼 잉여속성검사를 우회할 수 있다. 1. 구조적 타이핑 : 타입이 선언된 이름과 무관하게 속성의 구조가 같으면 호환된다고 판단하는 방식. 협업 시 유연함을 주지만, 너무 느슨할 수도 있음.// User에는 emai..
-
카테고리 없음
FastAPI 학습 5일차
1. SQLAlchemy 사용법파이썬에서 가장 널리 사용되는 SQL Toolkit이자 ORM이다. SQL 쿼리를 Python 코드로 변환할 수 있게 해주고 DB 테이블과 Python 클래스 간의 매핑을 가능케한다.# database/connection.pyfrom sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerDATABASE_URL = ""engine = create_engine(DATABASE_URL, echo=True)SessionFactory = sessionmaker(autocommit=False, autoflush=False, bind=engine)def get_db(): session = SessionFactory..
-
python
FastAPI 공부 4일차
1. 파이썬의 비동기 프로그래밍비동기 작업은 보통 async/await 키워드를 사용하여 정의하는데, async를 이용해 비동기함수(코루틴) 정의하고, await를 이용해 비동기 함수 내에서 시간이 오래걸리는 작업을 수행할 때 사용한다. 이를테면 대용량 파일을 읽고 쓰는 작업, db쿼리, 많을 수의 클라이언트를 처리해야 하는 웹서버에서 주로 사용한다.from pydantic import BaseModelclass UserSchema(BaseModel) id: int name: str class Config: orm_mode = True async def get_user_by_id(user_id: int): async with AsyncSessionLocal() as session: ..