You decide you want to show a component on click, so you do this.
function Bar() {
return <div>This is BAR</div>
}
function Foo() {| export type Entries<T> = { | |
| [K in keyof T]: [K, T[K]]; | |
| }[keyof T][]; | |
| /** | |
| * Helper to use `Object.entries` while retaining key type information. | |
| * Input object should be cast `as const` for maximum effectiveness. | |
| */ | |
| export function objEntries<T extends Record<string, unknown>>(obj: T): Entries<T> { | |
| return Object.entries(obj) as Entries<T>; |
| import { useRef, useCallback} from 'react'; | |
| /** | |
| * Accepts a given callback, and provides a new callback with a stable reference, | |
| * which will itself always call the latest version of the provided callback. | |
| * Useful for dealing with third party components that use stale closures. | |
| * @param callback - the original callback desired to be called | |
| * @returns A new callback with a stable reference, which when called, | |
| * calls the latest provided callback | |
| * @deprecated - This implementation may have future issues in concurrent mode, as it mutates |
| type ComparisonFn = (left: number, right: number) => boolean; | |
| // `buildComparison` is a 'Type Narrowing Identity Function' | |
| // It returns the value given to it, but also narrows the types. | |
| // In this case it allows typescript to retain the literal types of the keys | |
| // rather than widening them to 'string' | |
| const buildComparisons = <Comparison extends Record<string, ComparisonFn>>(comparison: Comparison) => comparison; | |
| // Using the Type Narrowing Identity Function: | |
| const comparisons = buildComparisons({ |
| /** | |
| * Get a union type derived from values of a const asserted array. | |
| * @example | |
| * const values = ['foo', 'bar'] as const; | |
| * type Val = ArrayValues<typeof values>; | |
| * // => 'foo' | 'bar' | |
| * | |
| * See https://github.com/microsoft/TypeScript/issues/28046#issuecomment-607145719 | |
| */ | |
| export type ArrayValues<T extends ReadonlyArray<unknown>> = T[number]; |
| import { FetchBaseQueryError } from '@rtk-incubator/rtk-query/dist'; | |
| /** | |
| * Default tags used by the cacher helpers | |
| */ | |
| const defaultTags = ["UNAUTHORIZED", "UNKNOWN_ERROR"] as const; | |
| type DefaultTags = typeof defaultTags[number]; | |
| function concatErrorCache<T, ID>( | |
| existingCache: CacheList<T, ID>, |