TypeScript Adventures with type-challenges – Day Pick
Oct 10, 2024 am 06:26 AMHello everyone.
I'm working through type-challenges to dive deeper into TypeScript.
Today, I’d like to share what I learned about the Pick.
- The challenge -
interface Todo { title: string description: string completed: boolean } type TodoPreview = MyPick<Todo, 'title' | 'completed'> const todo: TodoPreview = { title: 'Clean room', completed: false, }
Implement the built-in Pick generic without using it.
Constructs a type by picking the set of properties K from T.
- Description -
The challenge is to create your own version of the Pick utility type, which TypeScript provide as a standard utility.
- My solution -
interface Todo { title: string; description: string; completed: boolean; } type MyPick<T, U extends keyof T> = { [k in U]: T[k]; }; type TodoPreview = MyPick<Todo, "title" | "completed">; const todo: TodoPreview = { title: "Clean room", completed: false, };
- Explanation -
Let me explain, line by line.
On the first line, MyPick receives two arguments: T and U extends keyof T.
T:The base type that includes all properties.
U extends keyof T:Specifies the properties to include in the output type.
About keyof
About extends
On the second line,
It creates a new type which extracts only the specified properties from the given argument.
About Mapped Types such as [k in U]
As you can see below, a new type that excludes description from Todo is created by providing only title and completed to MyPick.
Happy Coding☀️
The above is the detailed content of TypeScript Adventures with type-challenges – Day Pick. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Replace String Characters in JavaScript

Custom Google Search API Setup Tutorial

8 Stunning jQuery Page Layout Plugins

Improve Your jQuery Knowledge with the Source Viewer

10 Mobile Cheat Sheets for Mobile Development
