all-threads-bot

Frontender`s Spectre

[Timur Shemsedinov] πŸ’‘ Номинальная ΠΈ структурная типизация, инкапсуляция, сокрытиС β€” ООП ΠΈ Ρ‚ΠΈΠΏΡ‹ Π² JavaScript / TepeScript

1 ноября 2025 Π³., 08:08

πŸ‘‰ https://nodeua.com/Patterns-2025 ▫️ Nominal Typing - ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²/классов/интСрфСйсов ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π² Ρ‚ΠΎΠΌ числС ΠΈ Ρ‡Π΅Ρ€Π΅Π· наслСдованиС. User { name: string } β‰  Department { name: string } ▫️ Structural Typing - ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² опрСдСляСтся структурой ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠΎΠΉ (соотвСтствиСм ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°ΠΊ Π² JS/TS). User { name: string } ≑ Department { name: string } ▫️ Encapsulation - объСдинСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ повСдСния Π² ΠΎΠ΄Π½Ρƒ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ (Π½Π° синтаксисС классов, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ², Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ). Counter { value, inc() } ▫️ Hiding - ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ видимости Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ состояния ΠΈ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ· внСшнСго ΠΊΠΎΠ΄Π°. Counter { #value, inc(), get value() } ▫️ Structural Composition - созданиС слоТных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΌ создания простых Π² конструкторах ΠΈ записи ссылкок Π² поля, с дальнСйшим Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Car { engine: Engine, wheels: Wheels[] } ▫️ Aggregation - слабая Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТащиСся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСзависимо ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. AggregateError { errors: [Error, Error, Error] } ▫️ Delegation - абстракция ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ своСму скомпозированному структурному ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ. Semaphore { #counter: Counter, get count(), enter(), leave() } πŸ‘‰ Code snippets: https://github.com/tshemsedinov/feed/blob/main/README.md#structural-approach-2025-10-31