IT/typescript34 [typescript] fattenObject 함수 type 만들기 아래 함수에 대해 Type을 정의해보자function flattenObject(obj: any, result: any = {}){ for (let key in obj) { if (obj.hasOwnProperty(key)) { if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) { flattenObject(obj[key], result); } else { result[key] = obj[key]; } } } return result;}const a = { .. 2024. 8. 21. [typescript] infer 개념조건부 타입에서 사용하는 기능으로, 컴파일러가 특정 타입을 추론하도록 도와주는 역할infer를 이용해 타입 시스템 내에서 타입을 유추하고, 그 유추된 타입을 다른 타입 계산에 활용 기본 사용법T extends U ? X : Y `T`가 `U`를 상속하거나 extends 하면 타입 `X`를 사용하고, 그렇지 않으면 타입 `Y`를 사용. 이 패턴에서 `infer`를 사용하면 `T`의 일부 타입을 유추하고 이를 타입 시스템 내에서 사용 할 수 있다. 예제type MD = T extends (...args: any[]) => infer R ? R : any;type D = MD number> //type: numbertype E = MD //type: any `MD`는 함수 타입 `T`의 반환 타입(retu.. 2024. 8. 14. [typescript] 함수타입(Function Type) 인자형 이게 왜 가능하지?processNumberAndString에서는 string을 받을 수도 있는데, number만 받는 wide에 넣었더니 문법 오류가 나지 않는것일까? function processNumber(x:number) {}function processNumberAndString(x:number | string) {}let wide: (x:number) => voidwide = processNumber // Works!wide = processNumberAndString // Works! when A ≤ B, A → X ≥ B → XA가 B의 subtype이고 반환형이 같을 때, B를 인자로 갖는 함수는 A를 인자로 갖는 함수의 서브타입 processNumberAndString에서 number 또.. 2024. 8. 14. [typescript] subtype 타입 = 집합 number type ≥ number literal type - number는 number literal의 슈퍼타입 - number literal은 number의 서브 타입 타입 호환성 - number - number literal const b:42 = 42const d:number = bconst e:number = 42const f: 42 = e //Type 'number' is not assignable to type '42'.(2322) 정리작은거는 큰거에 넣을 수 있고 큰거는 작은거에 못 넣는다. 2024. 8. 14. [typescript] pnpm monorepo에서 paths 설정하기 코드아래의 설명만으로는 부족하다.https://github.com/insidedw/monorepo-pnpm-ts GitHub - insidedw/monorepo-pnpm-tsContribute to insidedw/monorepo-pnpm-ts development by creating an account on GitHub.github.com packages 구조project - apps - calculator - src - libs - shared - src root에 tsconfig.json 추가baseUrl 기준으로 path를 지정{ "compilerOptions": { "baseUrl": ".", "paths": { "@S_shared/*": ["libs.. 2024. 7. 15. [typescript] is 개념TypeScript의 "is" 연산자는 주로 사용자 정의 타입 가드(User-defined Type Guards)에서 사용됩니다. 타입스크립트는 정적 타입 언어로, 컴파일 시점에 타입을 확인합니다. 하지만 런타임에는 여전히 자바스크립트처럼 동적으로 동작합니다. 이로 인해 변수의 타입을 런타임에 확인할 필요가 있을 때가 있습니다. "is" 연산자는 이럴 때 매우 유용합니다. 사용자 정의 타입 가드 (User-defined Type Guards)"Is" 연산자는 함수가 특정 타입의 값을 반환하는지 여부를 명시적으로 컴파일러에게 알려주는 역할을 합니다. 이는 특히 복잡한 타입 검사나 커스텀 타입 검사가 필요한 경우에 유용합니다. 예시아래는 사용자 정의 타입 가드가 어떻게 사용되는지 보여주는 예제입니다. i.. 2024. 6. 12. 이전 1 2 3 4 5 6 다음