feat: do the pick challenge
Node.js CI / Lint and Test (push) Successful in 39s

This commit is contained in:
2025-11-22 18:51:15 -08:00
parent f54cbbb613
commit 76f141ec31
+47
View File
@@ -0,0 +1,47 @@
/**
* @copyright NHCarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import type { Equal, Expect } from "@type-challenges/utils";
/**
* Original code:.
*
* ```ts
* type MyPick<T, K> = any
* ```
*/
type MyPick<T, K extends keyof T> = {
[P in K]: T[P];
};
/**
* Test cases.
*/
// @ts-expect-error -- Unused variable.
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- This is necessary for tests.
type Cases = [
Expect<Equal<Expected1, MyPick<Todo, "title">>>,
Expect<Equal<Expected2, MyPick<Todo, "title" | "completed">>>,
// @ts-expect-error -- Invalid key.
MyPick<Todo, "title" | "completed" | "invalid">,
];
interface Todo {
title: string;
description: string;
completed: boolean;
}
interface Expected1 {
title: string;
}
interface Expected2 {
title: string;
completed: boolean;
}