microsoft / microsoft/TypeScript

Can not specify toString/valueOf methods in object literal

Ouverte
#18,537 3 commentaires 2 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Bug Domain: check: Excess Property Checking Needs Human Review
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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.