microsoft / microsoft/TypeScript

Allow non-null assertion operator on destructuring

Abierto
#63,131 2 comentarios 0 reacciones 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

destructuring non null assertion operator

### ✅ Viability Checklist

- [x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
- [x] This wouldn't change the runtime behavior of existing JavaScript code
- [x] This could be implemented without emitting different JS based on the types of the expressions
- [x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
- [x] This isn't a request to add a new utility type: https://github.com/microsoft/TypeScript/wiki/No-New-Utility-Types
- [x] This feature would agree with the rest of our Design Goals: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals

### ⭐ Suggestion

Allow the non-null assertion post-fix operator to be used in destructuring assignments

### 📃 Motivating Example

I was destructuring an object with a long name, but I couldn't do so because I also needed to assert it wasn't null, and this is not currently allowed
```ts
const { veryVeryVeryLongPropertyName! } = obj;
```
So I had to do this
```ts
const veryVeryVeryLongPropertyName = obj.veryVeryVeryLongPropertyName!;
```

### 💻 Use Cases

### What do you want to use this for?
To avoid having to specify the name twice

### What workarounds are you using in the meantime?
```ts
// Workaround: Short name
// Shortcoming: Not what I actually wanted to do
const temp = obj.veryVeryVeryLongPropertyName!;

// Workaround: Default `never` value
// Shortcoming: Verbose
const { veryVeryVeryLongPropertyName = undefined! } = obj;
```

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

Empieza con los ejemplos de desestructuración del issue y la restricción indicada de que el JavaScript emitido no debe cambiar. Revisa cómo maneja el compilador las aserciones non-null y las asignaciones por desestructuración, y después establece el diseño y las pruebas necesarios; se considera terminado cuando la sintaxis propuesta se acepta sin cambiar la salida en tiempo de ejecució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
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.