Moment: Habilite todas as funcionalidades de não mutação após Object.freeze ()

Criado em 14 jan. 2016  ·  4Comentários  ·  Fonte: moment/moment

Separando o pedido de @kruncher da discussão em # 1754:

Tenho usado Object.freeze em instâncias momentâneas e geralmente alcançou o que eu precisava; exceto que acabei de descobrir que o seguinte falha:

let now = Object.freeze(moment());
if (now.isSameOrBefore(anotherTime)) { // throws exception
}

A exceção:

TypeError: Can't add property _isValid, object is not extensible
 at valid__isValid (C:\git\quick-test\node_modules\moment\moment.js:93:24)
 at Moment.moment_valid__isValid [as isValid] (C:\git\quick-test\node_modules\moment\moment.js:2195:16)
 at Moment.isSame (C:\git\quick-test\node_modules\moment\moment.js:1945:44)
 at Moment.isSameOrBefore (C:\git\quick-test\node_modules\moment\moment.js:1962:21)

Isso pode ser corrigido para que Object.freeze possa ser usado quando desejado?

Help Wanted

Todos 4 comentários

const moment = require('moment')
const today = Object.freeze(moment()); 
today.toString()
   => 'Tue May 02 2017 10:04:52 GMT-0400'
today.add(1, 'day')
   => moment("2017-05-03T10:04:52.889")
today.toString()
  => 'Wed May 03 2017 10:04:52 GMT-0400'

Talvez esteja faltando alguma coisa, mas Object.freeze não parece funcionar para mim na versão mais recente. Eu sei que há um grande impulso para a imutabilidade em 3.x mas, por enquanto, há confiabilidade em Object.freeze? /

Versão do nó: 6.10 (~ lts)
Versão do momento: 2.18.1

@butterflyhug - Não consigo reproduzir o TypeError, mesmo no modo estrito.

@SeanDunford - isso parece estranho. Não sei se você pode confiar na imutabilidade no 2.x.

Eu adoraria ajudar a entender por que esse objeto parece mutável, mesmo se congelado ou deepFrozen .

@marwahaha - Mudamos para Luxon agora. Na época, não estávamos prontos para usar o 3.x.

Ok, vou fechar e assumir que Object.freeze não funciona para moment s na versão 2.x.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

paulyoung picture paulyoung  ·  3Comentários

nikocraft picture nikocraft  ·  3Comentários

ninigix picture ninigix  ·  3Comentários

RobinvanderVliet picture RobinvanderVliet  ·  3Comentários

M-Zuber picture M-Zuber  ·  3Comentários