Temporal.Duration : méthode with()
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 with() des instances de Temporal.Duration retourne un nouvel objet Temporal.Duration représentant cette durée avec certains champs remplacés par de nouvelles valeurs. Comme tous les objets Temporal sont conçus pour être immuables, cette méthode fonctionne essentiellement comme le mutateur des champs de la durée.
Syntaxe
with(info)
Paramètres
info-
Un objet contenant au moins une des propriétés reconnues par
Temporal.Duration.from():years,months,weeks,days,hours,minutes,seconds,milliseconds,microseconds,nanoseconds. Les propriétés non définies utilisent les valeurs de la durée originale.
Valeur de retour
Un nouvel objet Temporal.Duration, où les champs définis dans info qui ne sont pas undefined sont remplacés par les valeurs correspondantes, et le reste des champs est copié à partir de la durée originale.
Exceptions
RangeError-
Levée dans l'un des cas suivants :
- L'une des propriétés reconnues dans l'objet
infon'est pas un entier (y compris les valeurs non finies). - Une unité de calendrier (années, mois, semaines) a une valeur absolue ≥ 232.
- La partie non-calendrier de la durée (jours et en dessous), lorsqu'elle est exprimée en secondes, a une valeur absolue ≥ 253.
- L'une des propriétés reconnues dans l'objet
TypeError-
Levée dans l'un des cas suivants :
- L'objet
infon'est pas un objet. - Toutes les propriétés reconnues dans l'objet
infosontundefined.
- L'objet
Exemples
>Utiliser la méthode with()
Vous pouvez utiliser with() pour obtenir un contrôle précis sur les champs d'un objet Temporal.Duration. Par exemple, vous pouvez équilibrer manuellement une durée uniquement sur une unité, ce que round() ne permet pas :
function balanceMinutes(duration) {
const { hours, minutes } = duration;
const totalMinutes = hours * 60 + minutes;
const balancedMinutes = totalMinutes % 60;
const balancedHours = (totalMinutes - balancedMinutes) / 60;
return duration.with({ hours: balancedHours, minutes: balancedMinutes });
}
const d1 = Temporal.Duration.from({ hours: 100, minutes: 100, seconds: 100 });
const d2 = balanceMinutes(d1);
console.log(d2.hours); // 101
console.log(d2.minutes); // 40
console.log(d2.seconds); // 100 ; reste non équilibré
Spécifications
| Spécification |
|---|
| Temporal> # sec-temporal.duration.prototype.with> |
Compatibilité des navigateurs
Voir aussi
- L'objet
Temporal.Duration - La méthode statique
Temporal.Duration.from() - La méthode
Temporal.Duration.prototype.add() - La méthode
Temporal.Duration.prototype.subtract() - La méthode
Temporal.Duration.prototype.round()