microsoft / microsoft/TypeScript
Can not specify toString/valueOf methods in object literal
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
TypeScript Version: 2.5.2
Code
interface X {
name: string
}
const x1: X = {
get name() { return 'x1' },
toString() { return this.name },
// ^^^^^^^^
// Type '{ readonly name: string; toString(): string; }' is not assignable to type 'X'.
// Object literal may only specify known properties, and 'toString' does not exist in type 'X'.
}
const x2: X = {name: 'x2'}
x2.toString = function () { return this.name } // But add `toString` later is allowed.
Expected behavior:
Should allow object literal specify toString, valueOf and all properties exists on Object.prototype, or at least improve the error report to give a workaround (const x: X & Object).
Actual behavior:
See comments in code.
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 la reproduction TypeScript 2.5.2 dans l’issue et comparez la vérification des propriétés en excès des littéraux d’objet pour toString/valueOf avec l’affectation de la même méthode après l’initialisation. Déterminez si les membres de Object.prototype doivent être acceptés ou si le diagnostic doit suggérer le contournement X & Object présenté. Le travail est terminé lorsque le comportement choisi est implémenté et couvert par un test de régression.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100