Skip to content

Commit 160c055

Browse files
committed
[code] improve some exercices
1 parent 48c54c5 commit 160c055

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

02-assignability-and-conditional-types/solution.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,7 @@ namespace four {
9090

9191
namespace five {
9292
type SafeGet<obj, key, defaultType> = key extends keyof obj
93-
? obj[key] extends infer value
94-
? value
95-
: defaultType
93+
? obj[key]
9694
: defaultType;
9795

9896
type res1 = SafeGet<{ name: "Gabriel" }, "name", "Anonymous">;

08-using-everything/solution.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,17 @@ namespace one {
3838
* the of url parameters
3939
*/
4040
namespace two {
41+
type CreateParamObject<keys extends string> = {
42+
[k in keys]: string;
43+
};
44+
4145
type ExtractUrlParams<url> =
4246
url extends `${infer start}/:${infer param}/${infer rest}`
43-
? ExtractUrlParams<start> &
44-
ExtractUrlParams<rest> & {
45-
[k in param]: string;
46-
}
47+
? CreateParamObject<param> &
48+
ExtractUrlParams<start> &
49+
ExtractUrlParams<rest>
4750
: url extends `${infer start}/:${infer param}`
48-
? ExtractUrlParams<start> & {
49-
[k in param]: string;
50-
}
51+
? CreateParamObject<param> & ExtractUrlParams<start>
5152
: {};
5253

5354
type res1 = ExtractUrlParams<"/user/:username">;

0 commit comments

Comments
 (0)