Доки по разработке
This project is maintained by teniryte
Принципы
Exclude, Pick, Omit, управляя ключами и значениями.NullableProps<T> помогают находить свойства, допускающие null | undefined.ReturnTypeAsync демонстрирует комбинирование синхронных и асинхронных функций в одной сигнатуре.Пример
type RemoveFromUnion<T, K> = T extends K ? never : T;
type ExcludeKeys<T, K extends keyof T> = {
[P in K]: T[P];
};
type NullableProps<T> = {
[P in keyof T]: T[P] extends null | undefined ? P : never;
}[keyof T];
type ReturnTypeAsync<T extends (...args: any) => any> = T extends (
...args: any
) => Promise<infer R>
? R
: T extends (...args: any) => infer R
? R
: any;
async function fetchUser(userId: number) {
return { email: 'mail@example.com', password: 'secret' };
}
type User = ReturnTypeAsync<typeof fetchUser>; // { email: string; password: string; }
Практика
console.log(person); в исходном коде был лишним — избегайте побочных эффектов в типовых примерах.