Socket
Book a DemoInstallSign in
Socket

uncheckedindexed

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

uncheckedindexed

A type helper to match the user's noUncheckedIndexedAccess setting

latest
Source
npmnpm
Version
0.0.2
Version published
Maintainers
1
Created
Source

uncheckedindexed

Some type helpers to match the user's noUncheckedIndexedAccess setting

Installation

Install via npm:

npm install uncheckedindexed

Exports

UncheckedIndexedAccess<T>

The most common use case - Evaluates to T | undefined if noUncheckedIndexedAccess is enabled, otherwise evaluates to T.

import type { UncheckedIndexedAccess } from "uncheckedindexed"

type SelectById<T> = (record: Record<string, T>, id: string) => UncheckedIndexedAccess<T>

IfUncheckedIndexedAccess<True, False>

Evaluates to True if noUncheckedIndexedAccess is enabled, otherwise evaluates to False.

import type { IfUncheckedIndexedAccess } from "uncheckedindexed"

type SelectById<T> = (record: Record<string, T>, id: string) => IfUncheckedIndexedAccess<T | undefined, T>

Explanation

Currently, there is no officially supported way to see if the user has noUncheckedIndexedAccess enabled.

There is a feature request for compiler settings to be available as Types - please support it if this is something you would find useful!

However, it is possible to detect:

const testAccess = ({} as Record<string, 0>).a; // will be 0 | undefined if enabled, otherwise 0

This sort of test is impossible to make in a .d.ts, as it would be compiled down to

declare const testAccess: 0

based on the package's noUncheckedIndexedAccess setting.

This package keeps its type declarations in a .ts file, where this limitation isn't the case and the value is evaluated by the user's TypeScript properly.

type IfMaybeUndefined<T, True, False> = [undefined] extends [T] ? True : False;

const testAccess = ({} as Record<string, 0>).a;

export type IfUncheckedIndexedAccess<True, False> = IfMaybeUndefined<
  typeof testAccess,
  True,
  False
>;

export type UncheckedIndexedAccess<T> = IfUncheckedIndexedAccess<
  T | undefined,
  T
>;

Keywords

typescript

FAQs

Package last updated on 31 May 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts