microsoft / microsoft/TypeScript

parseInt: use more concrete type for `radix` argument

Abierto
#32,051 3 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Awaiting More Feedback Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

Search Terms

parseInt, radix

Suggestion

From MDN docs:
radix: An integer between 2 and 36 that represents the radix
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt#Parameters

TS definition (lib.es5.d.ts):

declare function parseInt(s: string, radix?: number): number;

It will be safer to use more concrete type for radix:

type TRadix =
2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36

function safeParseInt(s: string, radix?: TRadix) {
  return parseInt(s, radix)
}

Use Cases

['1', '7', '11'].map(safeParseInt) // error -> Type 'number' is not assignable to type 'TRadix' ("strictFunctionTypes": true)

Examples

['1', '7', '11'].map(item) => safeParseInt(item, 10)) // OK

const config = {
  nested: {
    number: '42',
    radix: 10,
  },
} as const;
safeParseInt(config.nested.number, config.nested.radix)) // OK

Checklist

My suggestion meets these guidelines:

  • This wouldn't be a breaking change in existing TypeScript/JavaScript code
  • This wouldn't change the runtime behavior of existing JavaScript code
  • This could be implemented without emitting different JS based on the types of the expressions
  • This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
  • This feature would agree with the rest of TypeScript's Design Goals.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con la declaración de parseInt en lib.es5.d.ts y revisa cómo se representa su parámetro radix en las definiciones de la biblioteca estándar. Comprueba los ejemplos proporcionados de safeParseInt y map, y determina después el comportamiento a nivel de tipos y las expectativas de compatibilidad que definirían la finalización.

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
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
30/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.