Останнім часом почав більш-менш сурйозно розбиратись з typescript, то виявляється, це не просто інструмент для типізації js, штибу
let num: number = 2;
function func(arg1: string): number {
return arg1.length;
}
func(num); // повідомить про помилку, бо func приймає string, а ми передаємо num
а це, можна сказати, окрема мова програмування, котра оперує типами даних, і зрозуміти то все не так вже й просто, бо треба думати типами, а не даними.
type onlyStrings<T> = {
[K in keyof T]: T[K] extends string ? K : never;
}[keyof T]
type pickKeys<T, Keys extends keyof T> = {
[K in Keys]: T[K]
};
type myObj = {
id: number;
age: number;
firstName: string;
lastName: string;
};
type strings = pickKeys<myObj, onlyStrings<myObj>>;
// strings буде { firstName: string; lastName: string; }