[TypeChallenges] 7. Readonly (easy)
문제
Implement the built-in Readonly<T> generic without using it.
Constructs a type with all properties of T set to readonly, meaning the properties of the constructed type cannot be reassigned.
For example:
interface Todo {
title: string
description: string
}
const todo: MyReadonly<Todo> = {
title: "Hey",
description: "foobar"
}
todo.title = "Hello" // Error: cannot reassign a readonly property
todo.description = "barFoo" // Error: cannot reassign a readonly property
(출처: https://github.com/type-challenges/type-challenges/blob/main/questions/00007-easy-readonly/README.md)
나의 풀이
TypeScript의 내장 유틸리티 타입인 Readonly를 직접 구현하는 문제였다!
Readonly는 모든 프로퍼티가 읽기 전용으로 설정된 타입을 생성하므로 readonly 키워드를 이용해서 모든 프로퍼티를 읽기 전용으로 설정했다.
type MyReadonly<T> = {
readonly [Key in keyof T]: T[Key]
}
참고자료
1. 제네릭이란?
https://joshua1988.github.io/ts/guide/generics.html
제네릭 | 타입스크립트 핸드북
제네릭(Generics)의 사전적 정의 제네릭은 C#, Java 등의 언어에서 재사용성이 높은 컴포넌트를 만들 때 자주 활용되는 특징입니다. 특히, 한가지 타입보다 여러 가지 타입에서 동작하는 컴포넌트를
joshua1988.github.io
2. Readonly란?
https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype
Documentation - Utility Types
Types which are globally included in TypeScript
www.typescriptlang.org
2. readonly 키워드
https://www.typescriptlang.org/docs/handbook/2/objects.html#readonly-properties
Documentation - Object Types
How TypeScript describes the shapes of JavaScript objects.
www.typescriptlang.org