microsoft / microsoft/TypeScript
Tuple should be readonly by default
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
Any tuples can mutate, this entails incorrect typing
TypeScript Version: 4.1.0-dev.20200828
Search Terms:
"readonly tuple"
"immutable tuple"
Code
const exampleSort: [number, string] = [2, '1'];
exampleSort.sort();
exampleSort // Type: [number, string], RealType: [string, number]
const exampleSplice: [number, string] = [2, '1'];
exampleSplice.splice(0, 1);
exampleSplice // Type: [number, string], RealType: [string]
Expected behavior:
const exampleSort: [number, string] = [2, '1'];
// Property 'sort' does not exist on type '[number, string]'.(2339)
exampleSort.sort();
const exampleSplice: [number, string] = [2, '1'];
// Property 'splice' does not exist on type '[number, string]'.(2339)
exampleSplice.splice(0, 1);
Actual behavior:
const exampleSort: [number, string] = [2, '1'];
exampleSort.sort();
const exampleSplice: [number, string] = [2, '1'];
exampleSplice.splice(0, 1);
Related Issues:
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire les exemples de tuples dans le TypeScript Playground lié et comparez les types signalés avec les mutations à l’exécution de sort et splice. Suivez la gestion par le compilateur de la mutabilité des tuples et des tableaux ; le travail est considéré comme terminé lorsque les diagnostics attendus apparaissent pour ces opérations sans casser l’utilisation valide des tuples.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 35/100