microsoft / microsoft/TypeScript
Add `NonEmptyArray` to `lib` (but **not** `length > 0` narrowing)
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
⚙ Compilation target
ES2023
⚙ Library
ES2023
Missing / Incorrect Definition
type NonEmptyArray<T> = [T, ...T[]]
type ReadonlyNonEmptyArray<T> = readonly [T, ...readonly T[]]
Sample Code
const is_non_empty = <T>(a: ReadonlyArray<T>): a is ReadonlyNonEmptyArray<T> =>
a.length > 0
function sum(a: ReadonlyNonEmptyArray<number>): number
function sum(a: ReadonlyNonEmptyArray<bigint>): bigint
function sum(a:
ReadonlyNonEmptyArray<number> |
ReadonlyNonEmptyArray<bigint>
) {
//@ts-expect-error
return a.reduce((acc, x) => acc + x)
}
Documentation Link
There's no docs that I'm aware of. However, there are multiple issues using this boilerplate. See also: #60463
Here's a WIP example implementations of sum. The sample code is a simplified version of that. More info here
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza localizando los archivos de declaración de la biblioteca ES2023 y las definiciones de tipos de array existentes; el issue no menciona ningún archivo ni prueba específicos. Añade los alias NonEmptyArray mutable y readonly sin introducir un estrechamiento basado en la longitud, y después verifica el ejemplo de comprobación de tipos proporcionado y las pruebas relevantes del compilador.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100