Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Temporal.Duration : méthode valueOf()

Disponibilité limitée

Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.

La méthode valueOf() des instances de Temporal.Duration lève une TypeError, ce qui empêche les instances de Temporal.Duration d'être converties implicitement en primitives lorsqu'elles sont utilisées dans des opérations arithmétiques ou de comparaison.

Syntaxe

js
valueOf()

Paramètres

Aucun.

Valeur de retour

Aucune.

Exceptions

TypeError

Toujours levée.

Description

Parce que la conversion en primitive et la conversion en nombre appellent valueOf() avant toString(), si valueOf() est absent, alors une expression comme duration1 > duration2 les comparerait implicitement comme des chaînes de caractères, ce qui peut donner des résultats inattendus tels que "PT3S" > "PT1M". En levant une TypeError, les instances de Temporal.Duration empêchent ces conversions implicites. Vous devez les convertir explicitement en nombres en utilisant Temporal.Duration.prototype.total(), ou utiliser la méthode statique Temporal.Duration.compare() pour les comparer.

Exemples

Opérations arithmétiques et de comparaison sur Temporal.Duration

Toutes les opérations arithmétiques et de comparaison sur les instances de Temporal.Duration doivent utiliser les méthodes dédiées ou les convertir explicitement en primitives.

js
const duration1 = Temporal.Duration.from({ seconds: 3 });
const duration2 = Temporal.Duration.from({ minutes: 1 });
duration1 > duration2; // TypeError: can't convert Duration to primitive type
duration1.total("seconds") > duration2.total("seconds"); // false
Temporal.Duration.compare(duration1, duration2); // -1

duration1 + duration2; // TypeError: can't convert Duration to primitive type
duration1.total("seconds") + duration2.total("seconds"); // 63
duration1.add(duration2).toString(); // "PT1M3S"

Spécifications

Spécification
Temporal
# sec-temporal.duration.prototype.valueof

Compatibilité des navigateurs

Voir aussi