Quotidien Shaarli

Tous les liens d'un jour sur une page.

Aujourd'hui - August 26, 2026

Hiding internal state in TypeScript objects ✦ Carlos Menezes

L’article explique comment masquer l’état interne d’un objet TypeScript pour éviter qu’il ne soit utilisé directement par les consommateurs. L’auteur montre que les conventions comme le préfixe underscore ne suffisent pas, car les propriétés restent accessibles. En revanche, l’utilisation d’un symbole unique comme clé de propriété permet de restreindre l’accès à cet état, car il ne peut être référencé qu’à l’intérieur du module où il est défini.

Cette technique permet de conserver un état interne tout en simplifiant l’API publique de l’objet. Les fonctions du même module peuvent accéder à la propriété via le symbole, tandis que les opérations standard comme Object.keys ou JSON.stringify l’ignorent. Cela évite que l’état interne ne devienne une partie involontaire de l’interface publique.

Cependant, les symboles n’offrent pas une protection absolue : des méthodes comme Reflect.ownKeys ou Object.getOwnPropertySymbols permettent de les découvrir. Cette approche reste donc adaptée pour décourager un accès accidentel plutôt que pour une sécurité stricte, notamment dans le cadre d’API de bibliothèques.

Music theory for programmers

L’article Music theory for programmers explique la théorie musicale à travers le prisme de la programmation, en partant des principes physiques et mathématiques. L’auteur, qui ne joue pas d’instrument, démontre comment générer des notes, des gammes et des accords via du code, sans avoir à mémoriser des conventions arbitraires. L’idée centrale repose sur la modélisation d’un son comme une variation de nombres dans le temps, illustrée par des exemples concrets utilisant l’API Web Audio.

L’auteur aborde ensuite la notion de fréquence (exprimée en hertz) comme base de la hauteur des notes, soulignant son caractère arbitraire (comme le La à 440 Hz). Il montre comment créer une onde sinusoïdale simple et ajuster son volume avec une enveloppe (attack, decay) pour éviter les artefacts sonores indésirables, comme les clics. Ces concepts fondamentaux servent de fondation pour construire des structures musicales plus complexes.

Enfin, l’article prépare le terrain pour l’introduction de la notation musicale traditionnelle, une fois les bases physiques et algorithmiques établies. L’approche privilégie la compréhension intuitive plutôt que l’apprentissage par cœur, en s’appuyant sur des exemples exécutables directement dans le navigateur.