typescript demo step by step

This commit is contained in:
Primakov Alexandr Alexandrovich
2024-10-09 00:16:12 +03:00
commit 14bd95b5ae
31 changed files with 2012 additions and 0 deletions

17
06_complex/infer.ts Normal file
View File

@@ -0,0 +1,17 @@
const arr = [1, 2, '3', 4, 5];
// get type of array
type GetArrItem<Arg> = Arg extends (infer Item)[] ? Item : never;
type ArrItem = GetArrItem<typeof arr>
const user = { name: 'John', age: 30 } as const;
// get type of name property
type GetObjectNameType<Name> = Name extends { name: infer T } ? T : never
type UserName = GetObjectNameType<typeof user>
const double = (x: number, s: 'foo') => x * 2;
// get type of first argument of function
type GetFirstFuncArg<Arg> = Arg extends (a, x: infer T) => any ? T : never;
type DoubleArgType = GetFirstFuncArg<typeof double>