typescript - حذف undefined از نوع
من از typeof برای استنتاج نوع بازگشتی یک تابع استفاده میکنم، اما از آنجا که نمیتوانم تابع واقعی را فراخوانی کنم، از یک ترفند با استفاده از عملگر سهتایی برای استنتاج نوع استفاده میکنم، با این حال این من را با یک نوع اتحادی که شامل undefined است، باقی میگذارد:
function foo() {
return { bar: 1 };
}
const fooInstance = true ? undefined : foo(); // foo() is never actually called
type FooOrUndefined = typeof fooInstance; // {bar: number} | undefined
type Foo = ???; // Should be { bar: number }
آیا راهی برای حذف undefined از FooOrUndefined وجود دارد؟
پاسخ شماره ۱
شما خواهید خواست از NonNullable استفاده کنید:
type Foo = NonNullable<FooOrUndefined> // { bar: number; }
نمونه
پاسخ شماره ۲
اگر فقط میخواهید undefined را حذف کنید اما null را نگه دارید، میتوانید یک ابزار کوچک بنویسید:
type NoUndefined<T> = T extends undefined ? never : T;
type Foo = number | string | null | undefined;
type Foo2 = NoUndefined<Foo> // number | string | null
