typeScript
-
[TypeScript] 선언병합TypeScript 2022. 9. 23. 00:27
선언 병합 컴파일러가 같은 이름으로 선언된 두 개의 개별적인 선언을 하나의 정의로 병합하는 것을 뜻합니다. 인터페이스 병합 (Merging Interfaces) 가장 일반적이고 간단한 선언 병합 유형은 인터페이스 병합입니다. 가장 기본적인 수준에서, 병합은 각 선언의 멤버를 같은 이름의 인터페이스에 기계적으로 결합합니다. interface Box { height: number; width: number; } interface Box { scale: number; } let box: Box = {height: 5, width: 6, scale: 10}; 위 코드를 아래로 바꾸면 scale이 겹치는데 타입이 다르므로 에러가 발생합니다. interface Box { scale: string; width: nu..
-
[TypeScript] 고급타입 - 2TypeScript 2022. 9. 22. 00:26
타입 별칭(Type Aliases) 타입 별칭은 새로운 타입을 만드는게 아닌 그 타입을 나타내는 새로운 이름을 만드는 것 입니다. type Name = string; type NameResolver = () => string; type NameOrResolver = Name | NameResolver; function getName(n: NameOrResolver): Name { if (typeof n === "string") { return n; } else { return n(); } } 프로퍼티 내에 자기 자신을 참조할 수 있습니다. type Tree = { value: T; left: Tree; right: Tree; } 타입별칭은 제네릭이 될 수 있습니다. type Container = { va..
-
[TypeScript] 고급타입-1TypeScript 2022. 9. 21. 23:26
교차 타입(Intersection Types) 교차 타입은 여러 타입을 하나로 결합합니다. Person & Serializable & Loggable 은 Person, Serializable, Loggable 타입의 모든 멤버를 갖습니다. 아래는 믹스인을 만드는 간단한 예제입니다. function extend(first: First, second: Second): First & Second { const result: Partial = {}; for (const prop in first) { if (first.hasOwnProperty(prop)) { (result as First)[prop] = first[prop]; } } for (const prop in second) { if (second.has..
-
[TypeScript] 유니언과 교차타입TypeScript 2022. 9. 10. 17:15
유니언 타입(Union Types) 유니언 타입은 여러 타입 중 하나가 될 수 있는 값을 의미합니다. 세로 막대(|) 로 각 타입을 구분합니다. number | string | boolean 은 타입이 number 또는 string 또는 boolean 이 될 수 있음을 뜻합니다. 공통 필드를 갖는 유니언(Unions with common Fields) // @errors: 2339 interface Bird { fly(): void; layEggs(): void; } interface Fish { swim(): void; layEggs(): void; } declare function getSmallPet(): Fish | Bird; let pet = getSmallPet(); pet.layEggs();..