TS

👶 TypeScript

타입 넓히기 - 초과 프로퍼티 확인

초과 프로퍼티 TypeScript가 한 객체 타입을 다른 객체 타입에 할당할 수 있는지 확인할 때도 타입 넓히기를 이용합니다. 객체 타입과 그 멤버들은 공변 관계라는 규칙만을 적용하면 문제가 발생할 수 있습니다. 예를 들어 다음처럼 클래스에 전달해 그 내부 상태를 설정하는 용도의 Options라는 객체가 있다고 해보겠습니다. type Options = { baseURL: string cacheSize?: number tier?: 'prod' | 'dev' } class API { constructor(private options: Options){} } new API({ baseURL: 'https://cozy-linda.tistory.com', tier: 'prod' }) 옵션의 철자가 틀리면 어떤 일..

👶 TypeScript

타입 넓히기 - const 타입

타입 넓히기(type widening) 타입 넓히기는 TypeScript의 타입 추론이 어떻게 동작하는지 이해하는 데 필요한 핵심 개념입니다. TypeScript는 타입을 정밀하게 추론하기보다는 일반적으로 추론합니다. (덕분에 프로그래머의 삶이 편해집니다) let이나 var로 값을 바꿀 수 있는 변수를 선언하면 그 변수의 타입이 리터럴 값에서 리터럴 값이 속한 기본 타입으로 넓혀집니다. let a = 'x' // let a: string let b = 2 // let b: number var c = true // boolean const d = { x: 4} // (property) x: number enum E {A, B, C} let e = E.A // let e: E 값을 바꿀 수 없는 변수에선 상..

👶 TypeScript

할당성(assignability)

할당성(assignability) 서브 타입과 슈퍼 타입의 관계는 모든 정적 타입 언어에서 중요한 개념입니다. 또한 할당성(assignability)이 어떻게 동작하는지 이해하는데도 중요합니다. 할당성이란 A라는 타입을 다른 B라는 타입이 필요한 곳에 사용할 수 있는지를 결정하는 TypeScript 규칙을 의미합니다. "A를 B에 할당할 수 있는가?"라는 질문이 발생하면 TypeScript는 다음과 같은 몇 가지 규칙에 따라 처리합니다. 배열, 불(boolean), 숫자, 객체, 함수, 클래스, 클래스 인스턴스, 문자열, 리터럴 타입 등 열거형이 아닌 타입에선 다음의 규칙으로 A를 B에 할당할 수 있는지 결정합니다. A

👶 TypeScript

함수 가변성

함수 가변성 몇 가지 예를 살펴보겠습니다. 함수 A가 함수 B와 같거나 적은 수의 매개변수를 가지며 다음을 만족하면, A는 B의 서브 타입입니다. A의 this 타입을 따로 지정하지 않으면 'A의 this 타입 >: B의 this 타입'입니다. 'A의 각 매개변수 >: B의 대응 매개변수'입니다. 'A의 반환 타입 Flower' 형식의 인수는 '(r: Rose) => Rose' 형식의 매개 변수에 할당될 수 없습니다. // 'red' 속성이 'Flower' 형식에 없지만 'Rose' 형식에서 필수입니다.ts(2345) // index.ts(4, 3): 여기서는 'red'이(가) 선언됩니다. clone(roseToFlower) roseToThron은 정상 동작하지만 roseToFlower에서 에러가 발생합..

개발자 린다씨
'TS' 태그의 글 목록 (10 Page)