33 / 58
ΠΠ°ΠΊ TypeScript ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ structural typing vs nominal typing?
TypeScript ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ (structural typing): Π΄Π²Π° ΡΠΈΠΏΠ° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ, Π΅ΡΠ»ΠΈ Ρ Π½ΠΈΡ
ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° (Π½Π°Π±ΠΎΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²), Π° Π½Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Java/C#, Π³Π΄Π΅ class Dog ΠΈ class Cat Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ -- ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ (Π½ΠΎΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ), Π² TypeScript ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡ. ΠΠ»Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ Π½ΠΎΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ branded types.