uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Postlar arxiv
ToCode
1 419
# ื”ืคืชืขื•ืช ืขื™ืงืจื•ืŸ ื‘ืฉื POLA, ืจืืฉื™ ืชื™ื‘ื•ืช ืฉืœ principle of least astonishment, ื˜ื•ืขืŸ ืฉื‘ืขื™ืฆื•ื‘ ืชื•ื›ื ื” ืื ื—ื ื• ืจื•ืฆื™ื ืœื‘ื ื•ืช ืžืขืจื›ื•ืช ืฉื™ืชื ื”ื’ื• ื‘ื”ืชืื ืœืฆื™ืคื™ื•ืช ืฉืœ ืจื•ื‘ ื”ืžืฉืชืžืฉื™ื. ืื‘ืœ ื™ืฉ ืคื” ื‘ืขื™ื” - ืืฃ ืื—ื“ ืœื ื™ื›ื•ืœ ืœื“ืขืช ืžื” ื”ืฆื™ืคื™ื•ืช ืฉืœ ืจื•ื‘ ื”ืžืฉืชืžืฉื™ื ืื• ืžื™ ื‘ื›ืœืœ ื™ื”ื™ื• ื”ืžืฉืชืžืฉื™ื ื”ืืœื”. ื›ืฉื‘ื•ื ื™ื ืฉืคืช ืชื›ื ื•ืช ื”ื—ื™ื™ื ืขื•ื“ ื™ื•ืชืจ ืžืกื•ื‘ื›ื™ื, ื›ื™ ื›ืžืขื˜ ื›ืœ ืžื™ ืฉืžื’ื™ืข ืœืœืžื•ื“ ืืช ืฉืคืช ื”ืชื›ื ื•ืช ืฉื‘ื ื™ืช ืžื’ื™ืข ืขื ืฆื™ืคื™ื•ืช ืžืฉืคื•ืช ืชื›ื ื•ืช ืื—ืจื•ืช, ื•ื›ืžืขื˜ ื›ืœ ื”ื—ืœื˜ื” ืฉืชืขืฉื” ืชืคืชื™ืข ื”ืจื‘ื” ืื ืฉื™ื. ืžื˜ืก, ื”ื™ื•ืฆืจ ืฉืœ ืจื•ื‘ื™, ื˜ื•ืขืŸ ื‘ื”ืงืฉืจ ื”ื–ื” ืฉืขื™ืงืจื•ืŸ Pola ื‘ื›ืœืœ ืœื ืื•ืžืจ ืฉืฉืคืช ื”ืชื›ื ื•ืช ืฉืœื• ืฆืจื™ื›ื” ืœื”ื™ื•ืช ื”ื›ื™ ืคื—ื•ืช ืžืคืชื™ืขื” ืœืจื•ื‘ ื”ืื ืฉื™ื - ืืœื ืฉื”ื™ื ืฆืจื™ื›ื” ืœื”ื™ื•ืช ื”ื›ื™ ืคื—ื•ืช ืžืคืชื™ืขื” ืขื‘ื•ืจื•. ืื ื”ื’ืขืช ืžืฉืคื” ืื—ืจืช ื•ื”ื•ืคืชืขืช ืžืคื™ืฆ'ืจ ืžืกื•ื™ื ื–ื” ื‘ืกื“ืจ ื’ืžื•ืจ. ื–ื” ืคืฉื•ื˜ ืื•ืžืจ ืฉื”ื”ื‘ื ื” ืฉืœืš ืฉืœ ื”ืฉืคื” ืฉื•ื ื” ืžื–ื• ืฉืœ ื™ื•ืฆืจ ื”ืฉืคื”. ื•ื”ื ื” ืžืฆืื ื• ืขื•ื“ ื–ื•ื•ื™ืช ืฉืืคืฉืจ ืœืœืžื•ื“ ืžืžื ื” ืขืœ ื”ื˜ื›ื ื•ืœื•ื’ื™ื”. ื ื™ืงื— ืœื“ื•ื’ืžื” ืืช ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื”ืคืขื ื•ื‘ื•ืื• ื ื“ื‘ืจ ืขืœ Interface-ื™ื ื• Type-ื™ื. ื‘ืฉื ื™ื”ื ืื ื™ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœื”ื’ื“ื™ืจ ื˜ื™ืคื•ืก ื—ื“ืฉ ื•ืœื”ืจื—ื™ื‘ ืื•ืชื•, ืœื“ื•ื’ืžื” ืขื‘ื•ืจ ื›ืœื™ ืชื—ื‘ื•ืจื” ื•ืžื›ื•ื ื™ืช:
interface Vehicle {
  goto: (place: Place) => void;
  wheels: number;
}

interface Car extends Vehicle {
  testValidUntil: Date;
}
ื•ืื•ืชื• ื“ื‘ืจ ืขื type-ื™ื:
type Vehicle = {
  goto: (place: Place) => void;
  wheels: number;
};

type Car = Vehicle & {
  testValidUntil: Date;
}
ืื‘ืœ ืื– ืื ื™ ืžื ืกื” ืœื”ื’ื“ื™ืจ ืืช ืื•ืชื• ืฉื“ื” ื‘ Vehicle ื•ื‘ Car ืขื ื˜ื™ืคื•ืกื™ื ืฉื•ื ื™ื (ืœืžืฉืœ ืฉื“ื” ื‘ืฉื x ืฉื‘ Vehicle ื”ื•ื ืžืกื•ื’ number ื•ื‘ Car ื”ื•ื ืžืกื•ื’ string) ื•ืžื•ืคืชืข ืžื”ื”ื‘ื“ืœ ื‘ื™ืŸ ื”ืฉื ื™ื™ื: ื‘ืฉื™ืžื•ืฉ ื‘ interface-ื™ื ื”ืงื•ื“ ืœื ื™ืกื›ื™ื ืœื”ืชืงืžืคืœ ื‘ื’ืœืœ ืฉื”ื•ื ืœื ื™ื•ื“ืข ืžื” ืกื•ื’ ื”ืฉื“ื” ื‘ interface ื”ื™ื•ืจืฉ (ื‘ืžืงืจื” ืฉืœื ื• Car). ื‘ืฉื™ืžื•ืฉ ื‘ type-ื™ื ื”ืงื•ื“ ื™ืชืงืžืคืœ ืื‘ืœ ืกื•ื’ ื”ืฉื“ื” ื‘ interface ื”ื™ื•ืจืฉ ืœื ื™ื”ื™ื” ืืฃ ืื—ื“ ืžืฉื ื™ ื”ื˜ื™ืคื•ืกื™ื ื”ืžืชื ื’ืฉื™ื ืืœื ื™ื”ื™ื” never, ืžื” ืฉืื•ืžืจ ืฉืื™ืŸ ื‘ืขื™ื” ืœืงืžืคืœ ืืช ื”ืงื•ื“ ื›ืœ ืขื•ื“ ืœื ื™ืฆืจืชื™ ืืฃ ืžืฉืชื ื” ืžื” type ื”ื‘ืขื™ื™ืชื™. ื•ื”ื”ืคืชืขื” ื”ื–ืืช ื ืคืœืื”. ื›ื™ ืขื›ืฉื™ื• ื”ื™ื ืคื•ืชื—ืช ืืช ื”ื“ืœืช ืœื”ืžื•ืŸ ืฉืืœื•ืช ื—ื“ืฉื•ืช ื›ืžื• "ืžื” interface ื™ื•ื“ืข ืฉ type ืœื ื™ื•ื“ืข?", ืื™ืš interface ืžืฆืœื™ื— ืœื–ื”ื•ืช ืืช ื”ื‘ืขื™ื™ื” ื›ื‘ืจ ื‘ื”ื’ื“ืจื” ื• type ื—ื™ื™ื‘ ืœื—ื›ื•ืช ืขื“ ืฉื ื’ื“ื™ืจ ืžืฉืชื ื” ืžื” type ื”ื–ื”? ื”ืื ื–ื” ื‘ื›ื•ื•ื ื”? ื”ืื ื–ื” ืžืืคืฉืจ ืœ type ืœืขืฉื•ืช ื“ื‘ืจื™ื ืฉ interface ืœื ื™ื›ื•ืœ ืœืขืฉื•ืช? ื”ืื ื–ื• ืžื’ื‘ืœื” ืฉื”ื™ื ื—ืœืง ืžื”ื•ืชื™ ืžื” Design ืฉืœ ื”ืฉืคื” ื•ื™ื›ื•ืœื” ืœืœืžื“ ืื•ืชื™ ืžืฉื”ื• ืขืœ ื”ืกืžื ื˜ื™ืงื” ืฉืœ interface-ื™ื ื• type-ื™ื ื•ืžืชื™ ื›ื“ืื™ ืœื”ืฉืชืžืฉ ื‘ื›ืœ ืื—ื“? ื”ืื ื–ื• ืžื’ื‘ืœื” ื˜ื›ื ื™ืช ืฉืื•ืœื™ ืชืฉืชื ื” ื‘ืขืชื™ื“? ื”ืื ื™ืฉ ืžื™ืฉื”ื• ืฉืจื•ืฆื” ื‘ื›ืœืœ ืœืฉื ื•ืช ืืช ื–ื”? ื ืงื•ื“ืช ื”ื”ืชื—ืœื” ืฉืœ ื”ืฉืืœื•ืช ื”ื™ื ื”ืคืชืขื”. ื”ืคืชืขื” ื”ื™ื ื›ืžื• ืžืฆืคืŸ ื‘ืฉื‘ื™ืœื ื• ื‘ืชื”ืœื™ืš ื”ืœื™ืžื•ื“, ื”ื™ื ืชืžื™ื“ ืžืจืื” ืืช ื”ื›ื™ื•ื•ืŸ ื›ื“ื™ ืœื”ื™ื›ื ืก ื™ื•ืชืจ ืœืขื•ืžืง.

ToCode
1 419
# ืžืื—ื•ืจื™ ื”ืงืœืขื™ื ื‘ืขื‘ื•ื“ื” ืขื ืงื•ื“ ืงื™ื™ื, ืื—ืจื™ ืฉื”ืฆืœื—ืชื ืœื’ืจื•ื ืœืงื•ื“ ืœืขืฉื•ืช ืืช ืžื” ืฉืืชื ืจื•ืฆื™ื ื•ืืชื ืžืชื—ื™ืœื™ื ืœื”ืจื’ื™ืฉ ื‘ื ื•ื— ืื™ืชื•, ื”ืจืžื” ื”ื‘ืื” ื”ื™ื ืœื”ืชื—ื™ืœ ืœื”ืกืชื›ืœ ืžืื—ื•ืจื™ ื”ืงืœืขื™ื - ืžื™ ื”ื“ืžื•ื™ื•ืช ื”ืžืฉืคื™ืขื•ืช ืขืœ ื”ืงื•ื“? ืžื” ืžื ื™ืข ืื•ืชื? ื•ืœืžื” ื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื ื›ืžื• ืฉื”ื ืขื•ื‘ื“ื™ื? ื”ืจื‘ื” ืคืขืžื™ื ื”ืคืขืจ ื‘ื™ืŸ ืฉืชื™ ื”ืจืžื•ืช ื”ื•ื ืขืฆื•ื. ื“ื•ื’ืžื” ืงื˜ื ื” ืžื”ืขื•ืœื ืฉืœ ืจื™ืืงื˜ - ืื—ื“ ื”ืคื™ืฆ'ืจื™ื ื”ื—ื“ืฉื™ื ืฉืœ ืจื™ืืงื˜ 17 ื”ื™ื” ืฉืœื ืฆืจื™ืš ืœื›ืชื•ื‘:
import React from 'react';
ื‘ืชื—ื™ืœืช ื›ืœ ืงื•ื‘ืฅ JSX. ืจื•ื‘ื ื• ืฉืžื—ื ื• ืขืœ ื”ื—ื™ืกื›ื•ืŸ ื‘ื–ืžืŸ ื•ืขืฆืจื ื• ืฉื, ื•ื‘ืงื•ื“ ื—ื“ืฉ ืคืฉื•ื˜ ื”ืคืกืงื ื• ืœื›ืชื•ื‘ ืืช ื” import ื”ื–ื”. ื–ืืช ื”ืจืžื” ื”ืจืืฉื•ื ื”. ืจืžืช ืžืื—ื•ืจื™ ื”ืงืœืขื™ื ื›ื‘ืจ ืžื“ื‘ืจืช ืขืœ ื”ืกื™ื‘ื•ืช ื‘ื’ืœืœืŸ ืžื™ืฉื”ื• ื”ืชืืžืฅ ืœื”ื›ื ื™ืก ืืช ื”ืคื™ืฆ'ืจ ื”ื–ื”, ื•ื”ืขืจืš ื”ื ื•ืกืฃ ืฉื”ืคื™ืฆ'ืจ ื”ื–ื” ื ื•ืชืŸ ืœืื ืฉื™ื ืฉื›ื•ืชื‘ื™ื ื›ืœื™ื ื‘ืชื•ืš ื”ืืงื•ืกื™ืกื˜ื ืฉืœ ืจื™ืืงื˜. ืกื‘ืกื˜ื™ืืŸ ืžืจืงื‘ื’' ื•ื•ื ื™ืžื™ืŸ ืงืจื•ืœ ื›ืชื‘ื• ืžืกืžืš ื”ืกื‘ืจ ื“ื™ ืืจื•ืš ื‘ืื•ืชื” ืชืงื•ืคื” ืขืœ ื”ื”ื’ื™ื•ืŸ ื•ืžืื—ื•ืจื™ ื”ืงืœืขื™ื ืฉืœ ื”ื”ื—ืœื˜ื” ื›ืืŸ: https://github.com/reactjs/rfcs/blob/createlement-rfc/text/0000-create-element-changes.md ืงืจื™ืื” ืฉืœ ืื•ืชื• ืžืกืžืš ืžืฉื ื” ืœื’ืžืจื™ ืืช ื”ื”ื‘ื ื” ืฉืœ ืžื” ืงืจื” ืฉื ื•ืขื•ื–ืจืช ืœื’ื‘ืฉ ืชืžื•ื ื” ืžืœืื” ืขืœ ื”ืคื™ืฆ'ืจ ื•ื”ืงืฉืจ ืฉืœื• ืขื ื™ื›ื•ืœื•ืช ืื—ืจื•ืช ืฉืœ ืจื™ืืงื˜. ื™ืฉ ืื ืฉื™ื ืฉื”ื”ืฆืฆื” ืžืื—ื•ืจื™ ื”ืงืœืขื™ื ืžืœื”ื™ื‘ื” ืื•ืชื ื™ื•ืชืจ ืžื”ื”ืฆื’ื” ืขืฆืžื”; ืืฆืœ ืจื•ื‘ื ื• ืœื”ืฆืœื™ื— ืœื”ืกืชื›ืœ ืžืื—ื•ืจื™ ื”ืงืœืขื™ื ื•ืœื”ืชืขื ื™ื™ืŸ ื‘ืžื” ืฉื™ืฉ ืฉื ื–ืืช ืžื™ื•ืžื ื•ืช ืฉืฆืจื™ืš ืœืคืชื—. ื•ื”ื™ื ืœื’ืžืจื™ ืฉื•ื•ื” ืืช ื”ื”ืฉืงืขื”.

ToCode
1 419
# ืžื” ืขื•ืฉื™ื ืขื ื—ืกืžื™ื ืคืกื™ื›ื•ืœื•ื’ื™ื™ื ื—ืกืžื™ื ืคืกื™ื›ื•ืœื•ื’ื™ื™ื ื–ื” ื›ืฉืื ื—ื ื• ืœื ืžืกื•ื’ืœื™ื ืœืฉืงื•ืœ ืืคืฉืจื•ืช ืžืกื•ื™ืžืช, ืœืžืจื•ืช ืฉืื•ืชื” ืืคืฉืจื•ืช ืื•ืœื™ ืชืขื–ื•ืจ ืœื ื• ืœื”ืชืงื“ื. ื“ื•ื’ืžื” ืžื”ื—ื™ื™ื ืฉืžื—ื•ืฅ ืœืชื›ื ื•ืช ืชื”ื™ื” ื‘ืŸ ืื“ื ืฉื™ืฉ ืœื• ื›ืกืฃ ื‘ืฆื“ ืื‘ืœ ืœื ืžื•ื›ืŸ ืœืงื ื•ืช ื“ื™ืจื” ื›ื™ "ื”ืžื—ื™ืจื™ื ืžื˜ื•ืจืคื™ื ื•ืื™ืŸ ืžืฆื‘ ืฉืื ื™ ืžืฉืชืขื‘ื“ ืœืžืฉื›ื ืชื", ืœืžืจื•ืช ืฉื”ื—ื–ืจ ื”ืžืฉื›ื ืชื ื™ื”ื™ื” ืขื‘ื•ืจื• ื–ื•ืœ ื™ื•ืชืจ ืžืฉื›ื™ืจื•ืช (ื’ื ื‘ื ื™ื›ื•ื™ ื”ืจื™ื‘ื™ืช ืฉืื•ืœื™ ื”ื•ื ืฆื•ื‘ืจ ืขืœ ื”ื—ื™ืกื›ื•ืŸ), ื›ื™ ื”ื•ื ื’ืจ ื‘ืื–ื•ืจ ืฉื‘ื• ืžื—ื™ืจื™ ื”ื”ืฉื›ืจื” ื™ื—ืกื™ืช ื’ื‘ื•ื”ื™ื ืœืžื—ื™ืจื™ ื”ืงื ื™ื”. ื›ืฉื ื™ื›ื ืก ืœืขื•ืœื ื”ืžืงืฆื•ืขื™ ื ื•ื›ืœ ืœื“ืžื™ื™ืŸ ื“ื•ื’ืžืื•ืช ื™ื•ืชืจ ืงืจื•ื‘ื•ืช, ืœื“ื•ื’ืžื” ืืคืฉืจ ืœื—ืฉื•ื‘ ืขืœ ืžืชื›ื ืชืช ืฉื ืฉืืจืช ื‘ืขื‘ื•ื“ื” ืฉื”ื™ื ืœื ืื•ื”ื‘ืช ื›ื™ ื”ื™ื ืœื ืžื•ืฆืืช ืื•ืคืฆื™ื” ื™ื•ืชืจ ื˜ื•ื‘ื”, ืœืžืจื•ืช ืฉื”ื™ื ื™ื•ื“ืขืช ืฉื”ืกื™ื‘ื” ืฉื”ื™ื ืœื ืžืชืงื‘ืœืช ืœืขื‘ื•ื“ื” ื˜ื•ื‘ื” ื™ื•ืชืจ ื”ื™ื ืคืขืจื™ ื™ื“ืข, ื•ื”ื“ืจืš ื”ื™ื—ื™ื“ื” ืฉืœื” ืœืกื’ื•ืจ ืืช ื”ืคืขืจื™ื ื”ืืœื” ื–ื” ืœืขื–ื•ื‘ ืืช ื”ืขื‘ื•ื“ื” ื•ืœื”ืฉืงื™ืข ื›ืžื” ื—ื•ื“ืฉื™ื ื‘ืœืฉื‘ืช ืœืœืžื•ื“. ืื•ืชื” ืžืชื›ื ืชืช ืขืฉื•ื™ื” ืœื”ืขื“ื™ืฃ ืœื”ื™ืฉืืจ ืชืงื•ืขื” ื‘ืžืงื•ื ื›ื™ ื”ื™ื ืœื ืžืกื•ื’ืœืช ืœืฉืงื•ืœ ืืคื™ืœื• ืืช ื”ืืคืฉืจื•ืช ืœืขื–ื•ื‘ ืœื›ืžื” ื—ื•ื“ืฉื™ื ื•ืœื ืœื“ืขืช ืžื” ื™ืงืจื” ืื—ืจื™. ื•ื›ืฉื ืฆืœื•ืœ ืœืงื•ื“ ื ื•ื›ืœ ืœื“ื‘ืจ ืขืœ ื”ืžืชื›ื ืช ืฉืœื ืžืขืœื” ืขืœ ื“ืขืชื• ืœื›ืชื•ื‘ ื‘ื“ื™ืงื•ืช, ื›ื™ ื‘ื“ื™ืงื•ืช ื–ื” ื‘ื–ื‘ื•ื– ื–ืžืŸ, ืœืžืจื•ืช ืฉื”ื•ื ืžืขื•ืœื ืœื ื”ืฉืงื™ืข ืืช ื”ื–ืžืŸ ื‘ืœืœืžื•ื“ ืื™ืš ืœื›ืชื•ื‘ ื‘ื“ื™ืงื•ืช ื ื›ื•ืŸ; ืื• ื”ืžืชื›ื ืชืช ืฉืœื ืชืขืœื” ืขืœ ื“ืขืชื” ืœืงื—ืช ืงื•ืจืก ื›ื™ "ืื ืœืžื“ืจื™ืš ื”ื™ื” ืฉื›ืœ ื”ื•ื ื”ื™ื” ื›ื•ืชื‘ ืงื•ื“ ื•ืœื ืžืœืžื“". ืžื—ืกื•ืžื™ื ืคืกื™ื›ื•ืœื•ื’ื™ื™ื ืœื ื ืจืื™ื ื›ืžื• ืžื—ืกื•ื, ืืœื ืฉื”ื ืคืฉื•ื˜ ืžืกืชื™ืจื™ื ืืช ื”ืืคืฉืจื•ืช ืฉืžืื—ื•ืจื™ื”ื. ื›ืฉืื ื—ื ื• ื‘ืชื•ืš ื”ืฆื•ืžืช ื•ืžื ืกื™ื ืœื—ืฉื•ื‘ ืžื” ื”ืฆืขื“ ื”ื‘ื, ืื ื—ื ื• ืœื ื™ื›ื•ืœื™ื ืœื“ืžื™ื™ืŸ ืœืขืฉื•ืช ืืช ื”ืฆืขื“ ื”ื—ืกื•ื, ื•ืืคื™ืœื• ืื ืžื™ืฉื”ื• ืžืฆื™ืข ืœื ื• ื‘ื“ื™ื•ืง ืืช ื–ื” ืื ื—ื ื• ื ื™ื‘ื”ืœ ื•ื ืžืฆื ืื™ื ืกื•ืฃ ืชื™ืจื•ืฆื™ื ืœืžื” ื–ื” ืœื ืืคืฉืจื™. ืื‘ืœ ื™ืฉ ื’ื ื—ื“ืฉื•ืช ื˜ื•ื‘ื•ืช: ืœืžืจื•ืช ื”ืื™ืžื” ืฉื”ื ืžืขื•ืจืจื™ื, ื•ืœืžืจื•ืช ืฉืื™ ืืคืฉืจ ืžืžืฉ ืœืจืื•ืช ืืช ื”ื“ืจืš ืฉื”ื ื—ื•ืกืžื™ื, ืืช ื”ืžื—ืกื•ื ื”ืคืกื™ื›ื•ืœื•ื’ื™ ืขืฆืžื• ื™ื—ืกื™ืช ืงืœ ืœืจืื•ืช. ื™ื•ืฉื‘ื™ื ืขื ื—ื‘ืจ ืื• ื—ื‘ืจื”, ืžืขืœื™ื ืืช ื”ื‘ืขื™ื” ื•ืžื‘ืงืฉื™ื ืžืื•ืชื• ื—ื‘ืจ ืœื”ืฆื™ืข ื›ืžื” ืฉื™ื•ืชืจ ืืคืฉืจื•ื™ื•ืช ื•ื›ืžื” ืฉื™ื•ืชืจ ื”ื–ื•ื™ื•ืช. ื›ืฉืชืจืื• ืฉืื—ืช ื”ืืคืฉืจื•ื™ื•ืช ืžืžืฉ ืžื‘ื”ื™ืœื” ืืชื›ื, ื™ืฉ ืกื™ื›ื•ื™ ืฉื–ื™ื”ื™ืชื ืžื—ืกื•ื ืคืกื™ื›ื•ืœื•ื’ื™. ืื—ืจื™ ืฉืžื–ื”ื™ื ืžืชื—ื™ืœื” ื”ืขื‘ื•ื“ื” ื”ืงืฉื” ืฉืœ ืœืคืจืง ืืช ืื•ืชื• ืžื—ืกื•ื, ืœื—ืคืฉ ื ืชื•ื ื™ื ืžื“ื•ื™ืงื™ื, ืœื”ื‘ื™ืŸ ืžื” ื‘ืื•ืชื” ืืคืฉืจื•ืช ื›ืœ ื›ืš ืžืคื—ื™ื“ ืื•ืชื™ ื•ืžื” ืฆืจื™ืš ืœืงืจื•ืช ื›ื“ื™ ืฉืื•ื›ืœ ืœื—ื™ื•ืช ืขื ื”ืคื—ื“. ืฉื•ื•ื” ืœื“ื‘ืจ ืขื ืขืฆืžื›ื ืขืœ ื”ืคื•ื˜ื ืฆื™ืืœ ืฉืœ ืžื” ื™ืงืจื” ืื—ืจื™. ืื– ืื ืื ื™ ื—ื•ื–ืจ ืœืื•ืชื” ืžืชื›ื ืชืช ืฉืคื•ื—ื“ืช ืœืขื–ื•ื‘ ืืช ื”ืขื‘ื•ื“ื”, ื•ื›ืฉืžื™ืฉื”ื• ืžืฆื™ืข ืœืš ืืช ื–ื” ืืช ืžื™ื“ ื ืœื—ืฆืช ืขื ืื™ื–ื” "ืžื” ืคืชืื•ื ืื‘ืœ ืื ื™ ื—ื™ื™ื‘ืช ืืช ื”ื›ืกืฃ" - ืฉื•ื•ื” ืœืฉืื•ืœ: ื›ืžื” ื›ืกืฃ ืื ื™ ื‘ืืžืช ืฆืจื™ื›ื” ื‘ื—ื•ื“ืฉ? ื”ืื ืื ื™ ื™ื›ื•ืœื” ืœืืจื’ืŸ ืชื•ื›ื ื™ืช ื—ื™ืกื›ื•ืŸ ืฉืชืขื–ื•ืจ ืœื™ ืœืขื‘ื•ืจ ืืช ื”ื—ื•ื“ืฉื™ื ื”ืงืจื•ื‘ื™ื? ืฉื•ื•ื” ื’ื ืœื”ื–ื›ื™ืจ ืฉืคืขื ื™ืฉื‘ืช ืฉื ื” ืฉืœืžื” ื‘ืงื•ืจืก ื›ื“ื™ ืœืœืžื•ื“ ืœื”ื™ื•ืช ืžืชื›ื ืชืช, ื•ืขื•ื“ ืฉื™ืœืžืช ืขืœื™ื• ื›ืกืฃ, ืื– ืœืžื” ื–ื” ื›ืœ ื›ืš ืžื•ื–ืจ ืœืขืฉื•ืช ืžืฉื”ื• ื“ื•ืžื” ืฉื•ื‘? ื•ื”ื›ื™ ื—ืฉื•ื‘ ืœื“ื‘ืจ ืขืœ ื”ืžืฉื›ื•ืจืช ืฉืชื”ื™ื” ืœืš ืื—ืจื™ ืฉืชืฉื‘ื™ ืœืœืžื•ื“ ื•ืชื’ื™ืขื™ ื”ืจื‘ื” ื™ื•ืชืจ ืžื•ื›ื ื” ืœืจืื™ื•ื ื•ืช ื”ื‘ืื™ื. ื™ื•ืชืจ ืžื“ื™ ืคืขืžื™ื ื ืชืงืขืชื™ ืขืœ ืžื—ืกื•ืžื™ื ืคืกื™ื›ื•ืœื•ื’ื™ื™ื ื—ื•ื“ืฉื™ื ื•ืืคื™ืœื• ืฉื ื™ื, ื•ืื ื™ ื‘ื˜ื•ื— ืฉื’ื ืœื›ื ื™ืฉ ื ื™ืกื™ื•ืŸ ืขื ื›ืืœื”. ื›ืœ ืคืขื ื›ื–ืืช, ื›ืฉื”ืžื—ืกื•ื ื ืฉื‘ืจ ื•ื”ืฆืœื—ืชื™ ืœื–ื•ื– ืงื“ื™ืžื”, ื”ืฆืขืจ ื”ื™ื—ื™ื“ ื”ื™ื” "ืื™ืš ืœื ืขืฉื™ืชื™ ืืช ื–ื” ืงื•ื“ื". ื–ื” ื™ื›ื•ืœ ืœืขื‘ื•ื“ ื”ื•ื ื”ืชืžืจื™ืฅ ื”ื›ื™ ื˜ื•ื‘ ืฉืืคืฉืจ ืœื‘ืงืฉ.

ToCode
1 419
# ื‘ื•ืื• ื ืชืงืŸ ืืช JSON.parse ื‘ TypeScript ื‘ื’ืœืœ ืฉื”ื—ื™ื™ื ื™ื•ืชืจ ืžื•ืจื›ื‘ื™ื ืžืชื•ื›ื ื™ื•ืช ืžื—ืฉื‘, ื”ืจื‘ื” ืคืขืžื™ื ื‘ืฉืœื‘ ื›ืชื™ื‘ืช ื”ืงื•ื“ ืขื“ื™ื™ืŸ ืœื ื™ื”ื™ื” ืœื ื• ืืช ื›ืœ ื”ืžื™ื“ืข ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ื›ื“ื™ ืœื“ืขืช ืžื” ื™ืฉ ื‘ื›ืœ ืžืฉืชื ื”. ื‘ืžื™ื•ื—ื“ ื‘ืฉืคื” ื›ืžื• ื˜ื™ื™ืคืกืงืจื™ืคื˜, ืฉืžืชืงืžืคืœืช ืœ JavaScript, ืื ื—ื ื• ืจื’ื™ืœื™ื ืœื›ืชื•ื‘ ืงื•ื“ ืฉืžื’ืœื” ืžื” ืœืขืฉื•ืช ื’ื ื‘ื–ืžืŸ ืจื™ืฆื”. ื”ื‘ืขื™ื” ืฉื’ื™ืœื•ื™ ืžื” ืœืขืฉื•ืช ื‘ื–ืžืŸ ืจื™ืฆื” ื”ื•ืœืš ื ื’ื“ ื”ืจืขื™ื•ืŸ ืฉืœ Type Safety - ื›ื™ ืื ืื ื™ ืœื ื™ื•ื“ืข ืžื” ื™ืฉ ืœื™ ื‘ื™ื“, ืื™ืš ืื ื™ ื™ื•ื“ืข ืฉืžื•ืชืจ ืœื™ ืœืขืฉื•ืช ืื™ืชื• ืืช ืžื” ืฉืจืฆื™ืชื™ ืœืขืฉื•ืช. ืœื“ื•ื’ืžื” ื ื ื™ื— ืฉืื ื™ ืงื•ืจื ืื•ื‘ื™ืงื˜ ืž local storage ื•ืื ื™ ื—ื•ืฉื‘ ืฉื”ื•ื ืžื›ื™ืœ ืžื—ืจื•ื–ืช ืฉื”ื™ื ื™ื™ืฆื•ื’ JSON-ื™ ืฉืœ ืื•ื‘ื™ืงื˜ ืฉื™ืฉ ื‘ื• ืฉื ื™ ืฉื“ื•ืช ืžืกืคืจื™ื™ื ืขื ื”ืžืคืชื—ื•ืช x ื• y. ื”ืงื•ื“ ื”ื‘ื ื‘ JavaScript ืงื•ืจื ืืช ื”ืื•ื‘ื™ืงื˜ ื”ื–ื” ื•ืžื“ืคื™ืก ืืช ืกื›ื•ื ื”ืžืกืคืจื™ื:
const stringifiedValue = localStorage.getItem('value');
const parsedValue = JSON.parse(stringifiedValue);
const sum = parsedValue.x + parsedValue.y;

console.log(`sum = ${sum}`);
ืื‘ืœ ื›ืฉืื“ื•ืŸ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ืงื•ืจื ืืช ื”ืงื•ื“ ื”ื–ื” ื”ื•ื ื—ื•ื˜ืฃ ื—ื•ื: ืื™ืš ืืชื” ื™ื•ื“ืข, ื”ื•ื ืฆื•ืขืง ืขืœื™ื™, ืฉื‘ืืžืช ื™ืฉ ื‘ local storage ืื•ื‘ื™ืงื˜ ืขื ื”ืžืคืชื— ืฉื›ืชื‘ืช? ื•ืื™ืš ืืชื” ื™ื•ื“ืข ืฉื”ืขืจืš ื”ื•ื ื‘ืืžืช ืžื—ืจื•ื–ืช ืฉืชืฆืœื™ื— ืœืชืจื’ื ืื•ืชื” ืœ JSON? ื•ืื ื›ื‘ืจ ืคื™ืขื ื—ืช ืื•ืชื” ืœ JSON, ืื™ืš ืืชื” ื™ื•ื“ืข ืฉืœืื•ื‘ื™ืงื˜ ืฉืงื™ื‘ืœืช ื™ืฉ ืฉื“ื•ืช ื‘ืฉื x ื• y ื•ื”ื ืžืกืคืจื™ื? ื‘ืชืจื’ื•ื ืœ TypeScript ืื ื™ ืฆืจื™ืš ืœื”ืจื’ื™ืข ืืช ื›ืœ ื”ื“ืื’ื•ืช. ื ื™ืกื™ื•ืŸ ืจืืฉื•ืŸ ืฉืœื ืขื•ื‘ื“ ืขืฉื•ื™ ืœื”ื™ืจืื•ืช ื›ืš:
type TwoNumbers = { x: number, y: number };

const stringifiedValue = localStorage.getItem('value');
const parsedValue: TwoNumbers = JSON.parse(stringifiedValue);
const sum = parsedValue.x + parsedValue.y;

console.log(`sum = ${sum}`);
ื–ื” ืœื ืขื•ื‘ื“ ื‘ื’ืœืœ ืฉื˜ื™ื™ืคืกืงืจื™ืคื˜ ืžืกืคื™ืง ื—ื›ื ื‘ืฉื‘ื™ืœ ืœื”ื‘ื™ืŸ ืฉ getItem ืœื ืชืžื™ื“ ื™ื—ื–ื™ืจ ืžื—ืจื•ื–ืช ื• JSON.parse ืœื ื™ื›ื•ืœ ืœืขื‘ื•ื“ ืขืœ null-ื™ื, ืื‘ืœ ืื ืื ื™ ืžืชืงืŸ ืืช ื”ื‘ืขื™ื” ื”ื–ืืช ืื ื™ ืžื’ื™ืข ืœืงื•ื“ ื”ื‘ื ืฉื“ื•ื•ืงื ืžืชืงืžืคืœ ื™ื•ืคื™:
import './style.css'

type TwoNumbers = { x: number, y: number };

const stringifiedValue = localStorage.getItem('value');
if (stringifiedValue) {
  const parsedValue: TwoNumbers = JSON.parse(stringifiedValue);
  const sum = parsedValue.x + parsedValue.y;
  
  console.log(`sum = ${sum}`);
}
ื•ื–ืืช ื‘ืขื™ื” - ื›ื™ ืœื˜ื™ื™ืคืกืงืจื™ืคื˜ ืื™ืŸ ื‘ืืžืช ื“ืจืš ืœื“ืขืช ืฉืžื” ืฉื”ื™ื” ื‘ LocalStorage ืžืชืื™ื ืœื˜ื™ืคื•ืก ืฉื”ื’ื“ืจืชื™, ื•ื‘ื›ืœ ื–ืืช ื”ื•ื ืœื ื”ืชืจื’ื–. ืžื‘ื—ื™ื ืชื• ืื ืื ื™ ืžืคืขื ื— JSON ืื ื™ ื‘ื˜ื— ื™ื•ื“ืข ืžื” ืื ื™ ืืžื•ืจ ืœืงื‘ืœ. ืขื‘ื•ื“ื” ื—ื›ืžื” ื™ื•ืชืจ ืขื ื˜ื™ืคื•ืกื™ื ืชื›ืจื™ื— ืื•ืชื ื• ืœื‘ื“ื•ืง ืžื” ื‘ืืžืช ืคื™ืจืกืกื ื• ื•ืฉื”ื•ื ื‘ืืžืช ืžืชืื™ื ืœื˜ื™ืคื•ืก ืฉืœื ื•. ื‘ืฉื‘ื™ืœ ื–ื” ื”ื›ื™ ืงืœ ืœืขื˜ื•ืฃ ืืช JSON.parse:
import './style.css'

type TwoNumbers = { x: number, y: number };

function safeJsonParse(text: string): unknown {
  return JSON.parse(text)
}

const stringifiedValue = localStorage.getItem('value');
if (stringifiedValue) {
  const parsedValue: TwoNumbers = safeJsonParse(stringifiedValue);
  const sum = parsedValue.x + parsedValue.y;
  
  console.log(`sum = ${sum}`);
}
ื›ื‘ืจ ื”ืชืงื“ืžื ื•! ืขื›ืฉื™ื• ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื›ื‘ืจ ื›ื•ืขืก ืขืœ ื”ื”ืฉืžื” ืž JSON.parse ืœ parsedValue ื‘ื’ืœืœ ืฉืœื ื‘ื“ืงื ื• ืฉื”ืื•ื‘ื™ืงื˜ื™ื ืžืชืื™ืžื™ื. ื‘ืฉื‘ื™ืœ ื”ื‘ื“ื™ืงื” ืื ื™ ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ืคื•ื ืงืฆื™ื” ื ืคืจื“ืช:

type TwoNumbers = { x: number, y: number };

function safeJsonParse(text: string): unknown {
  return JSON.parse(text)
}

function isTwoNumbers(value: any): value is TwoNumbers {
  return (
    'x' in value &&
    typeof value.x === 'number' &&
    'y' in value &&
    typeof value.y === 'number'
  )
}

const stringifiedValue = localStorage.getItem('value');
if (stringifiedValue) {
  const parsedValue = safeJsonParse(stringifiedValue);
  if (isTwoNumbers(parsedValue)) {
    const sum = parsedValue.x + parsedValue.y;
    console.log(`sum = ${sum}`);
  }
}
ื”ืงื•ื“ ื”ืื—ืจื•ืŸ ื›ื‘ืจ ืžื‘ืฆืข ืืช ื›ืœ ื”ื‘ื“ื™ืงื•ืช, ื•ื‘ืื•ืคืŸ ื›ืœืœื™ ืงื•ื“ ืฉื™ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” ื”ืขื•ื˜ืคืช safeJsonParse ืชืžื™ื“ ื™ื”ื™ื” ื—ื™ื™ื‘ ืœื‘ื“ื•ืง ืืช ื”ืื•ื‘ื™ืงื˜ ืฉื”ื•ื ืžืงื‘ืœ ื‘ืขื–ืจืช ืคื•ื ืงืฆื™ื™ืช ื‘ื“ื™ืงื” ืœืคื ื™ ืฉืืคืฉืจ ื™ื”ื™ื” ืœื”ืฉืชืžืฉ ื‘ืขืจืš.

ToCode
1 419
ืœืžื™ ืฉืคืกืคืกื• ื”ืงืœื˜ื” ืฉืœ ื•ื•ื‘ื™ื ืจ ืจื™ืืงื˜ ื ื™ื™ื˜ื™ื‘ ืฉื”ืชืงื™ื™ื ื‘ื™ื•ื ื—ืžื™ืฉื™ ื”ืื—ืจื•ืŸ: https://www.youtube.com/watch?v=ou_9QtBC2_M

ToCode
1 419
# ืื™ืš ืœื”ื•ืจื™ื“ ืืช ื”ื“ื•ืœืจ ื‘ืคื™ื™ืชื•ืŸ ืฉืืœื” ืžืขื ื™ื™ื ืช ืฉืคื•ืจืกืžื” ื‘ืคื•ืจื•ื ืคื™ื™ืชื•ืŸ ื”ื–ื›ื™ืจื” ืœื™ ืฉื”ื›ื™ืฃ ื‘ืชื›ื ื•ืช ื”ื•ื ืœื ืœืžืฆื•ื ืืช ื”ืชืฉื•ื‘ื”. ื‘ืกื™ืคื•ืจ ื”ืคืขื ืžืชื›ื ืช ื›ืชื‘ ืชื•ื›ื ื™ืช ืฉืžื‘ืงืฉืช ืžื—ื™ืจ ื‘ื“ื•ืœืจื™ื, ื•ืจืฆื” ืœืขืฉื•ืช ืื™ื–ืฉื”ื• ื—ื™ืฉื•ื‘ ืขืœ ื”ืžื—ื™ืจ. ื‘ื•ืื• ื ื ื™ื— ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืฆื™ืข 10% ื”ื ื—ื”. ื”ื‘ืขื™ื” ื”ื™ื ืฉื—ืœืง ืžื”ืžืฉืชืžืฉื™ื ื”ื›ื ื™ืกื• ืืช ื”ืžื—ื™ืจ ืขื ื”ืชื—ื™ืœื™ืช $, ื•ื”ื™ื” ืฆืจื™ืš ืœืžืฆื•ื ื“ืจืš ืœื”ื™ืคื˜ืจ ืžืžื ื”. ื”ื ื” ืงื•ื“ ืฉื”ื™ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ื ืงื•ื“ืช ื”ื”ืชื—ืœื”:
price = float(input("Original price is: "))
price_after_discount = price * 0.9

print(f"After coupon discount you'll pay {price_after_discount}")
ื•ื”ืคืขืœื” ืœื“ื•ื’ืžื” ืชืงื™ื ื” ื”ื™ื:
$ python removedollar.py
Original price is: 15
After coupon discount you'll pay 13.5
ื•ื›ืžื•ื‘ืŸ ืฉื›ืฉืžื›ื ื™ืกื™ื ืืช ื”ืžื˜ื‘ืข ื‘ื”ืชื—ืœื” ื”ื›ืœ ื ืฉื‘ืจ:
Original price is: $10
Traceback (most recent call last):
  File "/Users/ynonp/tmp/blog/removedollar.py", line 1, in <module>
    price = float(input("Original price is: "))
ValueError: could not convert string to float: '$10'
ืžื” ืขื•ืฉื™ื? ## ืื•ืคืฆื™ื” 1: ืœืžื—ื•ืง ืืช ื”ื“ื•ืœืจ ื‘ื”ืชื—ืœื” ืื ืžื›ื ื™ืกื™ื ืื•ืชื• ื’ื™ืฉื” ืจืืฉื•ื ื” ืœืคื™ืชืจื•ืŸ ื™ื›ื•ืœื” ืœื”ืชื‘ืกืก ืขืœ ื–ื” ืฉื›ืฉืžืฉื”ื• ื ืฉื‘ืจ ืื ื—ื ื• ืžืชืงื ื™ื ืื•ืชื•. ืื– ืื ืฉืžื ื• ืœื‘ ืฉืžืฉืชืžืฉื™ื ืžื›ื ื™ืกื™ื ื“ื•ืœืจ ื‘ืชื—ื™ืœืช ื”ืžื—ื™ืจ, ืคืฉื•ื˜ ื ืžื—ืง ืืช ื”ื“ื•ืœืจ:
user_price = input("Original price is: ")
price = float(user_price.lstrip("$"))
price_after_discount = price * 0.9

print(f"After coupon discount you'll pay {price_after_discount}")
ื›ืžื•ื‘ืŸ ืฉื”ื—ื™ืกืจื•ืŸ ื”ื•ื ืฉืื ื—ื ื• ืžื•ื—ืงื™ื ืจืง ื“ื•ืœืจ ื•ืจืง ืžื”ื”ืชื—ืœื”. ืื ืžื™ืฉื”ื• ื”ื—ืœื™ื˜ ืœื”ื›ื ื™ืก ืžื˜ื‘ืข ืฉื•ื ื” ืื• ื‘ืกื•ืฃ ื‘ืžืงื•ื ื‘ื”ืชื—ืœื” ื”ืžืขืงืฃ ืฉืœื ื• ืœื ื™ืขื‘ื•ื“. ## ืื•ืคืฆื™ื” 2: ืœื ืงื•ืช ืืช ื”ืงืœื˜ ืขื ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™ ื’ื™ืฉื” ื™ื•ืชืจ ืžืชื•ื—ื›ืžืช ื”ื™ื ืœื–ื”ื•ืช ืืช ื›ืœ ื”ืฉื˜ื•ื™ื•ืช ืžืฉื ื™ ืฆื™ื“ื™ ื”ืžื—ื™ืจ ืขื ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™ ื•ืœืงื—ืช ืจืง ืืช ื”ืžืกืคืจื™ื:
import re

price = input("Original price is: ")
match = re.search(r'([\d.]+)', price)
if match:
    price = float(match.group(1))
    price_after_discount = price * 0.9

    print(f"After coupon discount you'll pay {price_after_discount}")
else:
    print(f"Invalid price {price}")
ื’ื™ืฉื” ื–ื• ื™ื•ืชืจ ืื™ื˜ื™ืช ืžืžื—ื™ืงืช ืจืง ื”ืชื• ื”ืจืืฉื•ืŸ, ืื‘ืœ ื’ื ื™ื•ืชืจ ื’ืžื™ืฉื”. ## ืื•ืคืฆื™ื” 3: ืœืชืคื•ืก ืืช ื”ืฉื’ื™ืื” ื•ืœื”ืฆื™ืข ืœืžืฉืชืžืฉ ืœื”ื›ื ื™ืก ืžื—ื“ืฉ ืืช ื”ืงืœื˜ ื‘ื—ื–ืจื” ืœืคืฉื˜ื•ืช, ืืคืฉืจ ืœื”ื™ื•ืช ื™ืฉื™ืจื™ื ืขื ื”ืžืฉืชืžืฉื™ื ื•ืœื‘ืงืฉ ืžื”ื ืœื”ืงืœื™ื“ ืžืกืคืจ ื‘ืœื™ ืกื™ืžืŸ ืžื”ืฆื“ื“ื™ื. ืื ื–ื” ืœื ืงืจื” ื ื•ื›ืœ ืœื‘ืงืฉ ืžื”ื ืœื”ืงืœื™ื“ ืฉื•ื‘:
while True:
    try:
        price = float(input("Original price is: "))
        price_after_discount = price * 0.9

        print(f"After coupon discount you'll pay {price_after_discount}")
        break
    except ValueError:
        print("Please type the price as number only (no $ sign)")
## ืื•ืคืฆื™ื” 4: ืœื”ื’ื‘ื™ืœ ืืช ื”ืชื•ื•ื™ื ืฉืžืฉืชืžืฉ ื™ื›ื•ืœ ืœื”ืงืœื™ื“ ื•ืจื™ืื ื˜ ื™ื•ืชืจ ืžืชื•ื—ื›ื ืขืœ 3 ื™ื”ื™ื” ืœื”ื’ื‘ื™ืœ ืžืžืฉ ืืช ื”ืžืฉืชืžืฉ ื›ืš ืฉืืคืฉืจ ื™ื”ื™ื” ืœื”ืงืœื™ื“ ืจืง ืกืคืจื•ืช ืื• ืกื™ืžืŸ ื ืงื•ื“ื”. ื”ืžื•ื“ื•ืœ readchar ืฉืœ ืคื™ื™ืชื•ืŸ ืขื•ืฉื” ื‘ื“ื™ื•ืง ืืช ื–ื”:
import sys, string
from readchar import readkey, key

def read_only_numbers(prompt):
    value = ""
    print(prompt, end="")
    sys.stdout.flush()

    while True:
        k = readkey()
        if k == key.ENTER:
            print()
            return float(value)
        if k not in string.digits and k != ".":
            continue

        print(k, end="")
        sys.stdout.flush()
        value += k


price = float(read_only_numbers("Original price is: "))
price_after_discount = price * 0.9

print(f"After coupon discount you'll pay {price_after_discount}")
## ืกื™ื›ื•ื ื”ืชืจื’ื™ืœ ื”ื–ื” ื”ื•ื ืื—ืช ื”ืกื™ื‘ื•ืช ืฉืื ื™ ืœื ืื•ื”ื‘ ืœื—ืœืง ืคื™ืชืจื•ื ื•ืช ืขื ื”ืชืจื’ื™ืœื™ื ืคื” ื‘ืืชืจ. ืœื ืžืฉื ื” ื›ืžื” ืคื™ืชืจื•ื ื•ืช ืจืื™ืชื, ืชืžื™ื“ ืืคืฉืจ ืœื—ืฉื•ื‘ ืขืœ ืขื•ื“ ืคื™ืชืจื•ืŸ ื•ื”ืฆื•ืจืš ืœื—ืคืฉ ืืช "ื”ืคื™ืชืจื•ืŸ ื”ื ื›ื•ืŸ" ื”ื•ื ื‘ื“ื™ื•ืง ืžื” ืฉืขื•ืฆืจ ืื•ืชื ื• ืžืœื”ืชืงื“ื. ื”ืžืฉื—ืง ื›ืฉืจื•ืื™ื ื‘ืขื™ื” ื”ื•ื ืœื ืœื—ืคืฉ ืื™ืš "ืฆืจื™ืš" ืœืคืชื•ืจ ืื•ืชื”, ืืœื ืื™ืš "ืืคืฉืจ" ืœืคืชื•ืจ ืื•ืชื”, ื•ืžื” ื”ื™ืชืจื•ื ื•ืช ื•ื”ื—ืกืจื•ื ื•ืช ืฉืœ ื›ืœ ื’ื™ืฉื”. ื .ื‘. ื›ืœ ื”ื’ื™ืฉื•ืช ื›ื•ืœืœื•ืช ื˜ืขื•ืช ื—ื™ืฉื•ื‘ ื‘ื’ืœืœ ืฉ float-ื™ื ื”ื ืœื ื“ืจืš ื˜ื•ื‘ื” ืœื™ื™ืฆื’ ื›ืกืฃ. ื ืกื• ืœืžืฆื•ื ืื™ื–ื” ืขืจื›ื™ื ื ื•ืชื ื™ื ืชื•ืฆืื•ืช ืœื ื ื›ื•ื ื•ืช, ื•ืœืชืงืŸ ื‘ืืžืฆืขื•ืช ื”ื—ืœืคืช ื”ื—ื™ืฉื•ื‘ ืœืžืกืคืจื™ื ืฉืœืžื™ื ืฉืžื™ื™ืฆื’ื™ื ืกื ื˜ื™ื.

ToCode
1 419
# ืœื ื—ืฉื‘ืชื™ ืขืœ ื–ื” ืœื ื—ืฉื‘ืชื™ ืขืœ ื–ื” ืฉื›ืฉืžืฉื ื™ื ื›ืชื•ื‘ืช ืžื™ื™ืœ ืฆืจื™ืš ืœื‘ืงืฉ ืกื™ืกืžื”, ื›ื™ ื‘ืจื•ื‘ ื”ืืชืจื™ื ืืคืฉืจ ืœืœื—ื•ืฅ "ืฉื›ื—ืชื™ ืกื™ืกืžื”" ื•ืœืงื‘ืœ ืงื™ืฉื•ืจ ืœืื™ืคื•ืก ืกื™ืกืžื” ืœืžื™ื™ืœ. ืœื ื—ืฉื‘ืชื™ ืขืœ ื–ื” ืฉืืœืžื ื˜ ื™ื›ื•ืœ ืœื”ืชื›ื•ื•ืฅ ืื ื”ื•ื ื‘ืชื•ืš flex-box ื›ื™ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ flex-shrink ื”ื™ื 1. ืœื ื—ืฉื‘ืชื™ ืขืœ ื–ื” ืฉื›ืžื•ืช ื”ืฉืื™ืœืชื•ืช ืฉื›ืชื‘ืชื™ ืชืœื•ื™ื” ื‘ืžืกืคืจ ื”ืฉื•ืจื•ืช ื‘ื˜ื‘ืœื”. ืœื ื—ืฉื‘ืชื™ ืฉืงื•ื‘ืฅ ื”ืœื•ื’ ื™ื’ื™ืข ืœื›ื–ื” ื’ื•ื“ืœ. ื›ืœ ืžื ื’ื ื•ืŸ ืฉืื ื—ื ื• ืžื›ื ื™ืกื™ื ืœืžืขืจื›ืช ื™ื›ื•ืœ ืœื”ื™ืฉื‘ืจ ื‘ื“ืจื›ื™ื ืฉืœื ื—ืฉื‘ื ื• ืขืœื™ื”ืŸ. ื’ื™ืฉื” ืื—ืช ืฉืœื ืขื•ื‘ื“ืช ืœื”ืชืžื•ื“ื“ ืขื ื”ืคื—ื“ ื”ื™ื ืœื ืกื•ืช ื›ืŸ ืœื—ืฉื•ื‘ ืขืœ ื”ื›ืœ ืžืจืืฉ, ืœืชื›ื ืŸ ืขื“ ืœืคืจื˜ื™ื ื”ื›ื™ ืงื˜ื ื™ื ื•ืœืชืช ืœืื™ื ืกื•ืฃ ืื ืฉื™ ืžืงืฆื•ืข ืœืขื‘ื•ืจ ืขืœ ื”ืชื•ื›ื ื™ื•ืช ืœืคื ื™ ืฉืžืขื‘ื™ืจื™ื ืื•ืชืŸ ืœืคื™ืชื•ื—. ื–ื” ืœื ืขื•ื‘ื“ ื›ื™ ื’ื ืื ืฉื™ ืžืงืฆื•ืข ื˜ื•ื‘ื™ื ืžืคืกืคืกื™ื ื•ื›ื™ ืขื•ืœื ื”ืชื•ื›ื ื” ืžืฉืชื ื” ื›ืœ ื”ื–ืžืŸ. ื’ื™ืฉื” ื™ื•ืชืจ ื˜ื•ื‘ื” ืžืฉืœื‘ืช ื‘ื™ืŸ ืžื—ืงืจ ื˜ื•ื‘ ืžืจืืฉ ืœื‘ื™ืŸ ื ื›ื•ื ื•ืช ืœืชืงืŸ ื‘ื–ืžืŸ ืจื™ืฆื”: ืื ื—ื ื• ืœื ืžื•ื•ืชืจื™ื ืขืœ ืชื›ื ื•ืŸ. ื›ืฉื ืขืœื” ืžืขืจื›ืช ืื ื—ื ื• ื ื‘ื“ื•ืง ืื™ืคื” ื”ืœื•ื’ื™ื ืฉืœื” ื ืฉืžืจื™ื, ืื™ืคื” ื”ื’ื™ื‘ื•ื™ื™ื ื ืฉืžืจื™ื, ื ืคืขื™ืœ ื›ืœื™ื ืื•ื˜ื•ืžื˜ื™ื™ื ืฉื™ืขื–ืจื• ืœื ื• ืœืžืฆื•ื ื‘ืขื™ื•ืช ื ืคื•ืฆื•ืช ื‘ืงื•ื“ ื•ื ื›ื™ืจ ืืช ื”ืงื•ื“ ื•ื”ื›ืœื™ื ืฉืœื ื• ืžืกืคื™ืง ื˜ื•ื‘ ื›ื“ื™ ืœื ืœืคืฉืœ ื‘ื“ื‘ืจื™ื ื‘ืจื•ืจื™ื. ื‘ืื•ืชื• ื–ืžืŸ, ื›ืฉืžื™ืฉื”ื• ืžื“ื•ื•ื— ืขืœ ืชืงืœื” ืžืชื›ื ืชื™ื ื˜ื•ื‘ื™ื ืœื ืœื•ืงื—ื™ื ืœืœื‘ ืื• ืžืชื•ื•ื›ื—ื™ื. ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ื–ื” ื›ื”ื–ื“ืžื ื•ืช ืœืœืžื•ื“ "ืขืœ ืžื” ืœื ื—ืฉื‘ืชื™ ื”ืคืขื" ื•ืžื•ืกื™ืคื™ื ืœืฆ'ืง ืœื™ืกื˜ ืœืงืจืืช ื”ืคืขื ื”ื‘ืื”.

ToCode
1 419
# ืœื”ื‘ื™ืŸ ืžื” ื—ืฉื•ื‘ ืื ื™ืฉ ืžื˜ืจื” ืื—ืช ืฉื‘ื’ืœืœื” ืฉื•ื•ื” ืœืงื—ืช ืงื•ืจืก ืขืœ ื ื•ืฉื ื•ืœื ืœื”ืกืชืคืง ื‘ืงืจื™ืืช ืชื™ืขื•ื“ ื–ื” ืœื™ืžื•ื“ ื ื›ื•ืŸ ืฉืœ ืกื“ืจ ื”ื“ื‘ืจื™ื ื•ื”ื‘ื ื” ืฉืœ ืžื” ื—ืฉื•ื‘ ื•ืขืœ ืžื” ืืคืฉืจ ืœื•ื•ืชืจ. ื•ืœื›ืŸ ื”ื˜ืขื•ืช ื”ื›ื™ ื ืคื•ืฆื” ื›ืฉืœื•ืงื—ื™ื ืงื•ืจืก ื”ื™ื ืœื”ืฉื•ื•ืช ืื•ืจืš ืื• ื”ื™ืงืฃ ืฉืœื•. ืื ื™ ื™ื›ื•ืœ ืœื”ืขื‘ื™ืจ ื—ื™ื™ื ืฉืœืžื™ื ื‘ื›ืชื™ื‘ืช ื™ื™ืฉื•ืžื™ ืจื™ืืงื˜ ื‘ืœื™ ืœื”ืฉืชืžืฉ ื‘ Context, ื‘ืœื™ Code Splitting, ื‘ืœื™ Class Components, ื‘ืœื™ CSS in JS ื•ื‘ืœื™ ืขื•ื“ ืขืฉืจื•ืช ืคื™ืฆ'ืจื™ื ืฉืœื•, ื•ื›ืš ืขื ืขื•ื“ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืจื‘ื•ืช ื ื•ืกืคื•ืช. ื”ืคืขืจ ื‘ื™ืŸ ืงื•ืจืก ืœืชื™ืขื•ื“ ื”ื•ื ืชืžื™ื“ ื’ื“ื•ืœ ื•ื›ืš ื”ื•ื ืฆืจื™ืš ืœื”ื™ื•ืช. ืงื•ืจืก ื˜ื•ื‘ ืขื•ื–ืจ ืœื”ื‘ื™ืŸ ืžื” ื—ืฉื•ื‘, ืœื”ืชืžืงื“ ื‘ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื”ื‘ื ื•ืœืชืช ืœื™ ืืช ื”ืžื™ื•ืžื ื•ืช ืœืขืฉื•ืช ืžืฉื”ื• ืžื•ืขื™ืœ ืขื ืžื” ืฉืœืžื“ืชื™. ืื ื™ ืœื ืžื—ืคืฉ ืงื•ืจืก ืฉื™ื—ืœื™ืฃ ืชื™ืขื•ื“ ืืœื ื›ื–ื” ืฉืื—ืจื™ื• ืื”ื™ื” ืžื•ื›ืŸ ืœืฉืžื•ืข ืขื•ื“ ื•ืœืงืจื•ื ืืช ื”ืชื™ืขื•ื“. ื›ื™ ื”ืชื•ืฆืื” ืฉืœ ืœืœืžื•ื“ ื™ื•ืชืจ ืžื“ื™ ื—ื•ืžืจ ื”ื™ื ืœื ืฉื™ื•ื“ืขื™ื ื™ื•ืชืจ ืžื“ื™, ืืœื ืฉื”ื›ืœ ืžืชืขืจื‘ื‘ ื•ืœื ืžืฆืœื™ื—ื™ื ืœื›ืชื•ื‘ ืืคื™ืœื• ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืกื™ืกื™ื™ื ื›ืžื• ืฉืฆืจื™ืš.

ToCode
1 419
ื”ื™ ื—ื‘ืจื™ื ืขื•ื“ 15 ื“ืงื•ืช (ื‘ืฉืขื” ืขืฉืจ) ื ืชื—ื™ืœ ื•ื•ื‘ื™ื ืจ ื”ื™ื›ืจื•ืช ืขื ืจื™ืืงื˜ ื ื™ื™ื˜ื™ื‘. ืžื•ื–ืžื ื™ื ืœื”ืฆื˜ืจืฃ ื‘ืงื™ืฉื•ืจ: https://us06web.zoom.us/j/85267945481?pwd=NDNPSUNuQlVocHBaZlBrdElLYkFZUT09

ToCode
1 419
# ื’ื™ื˜ ืืœื™ืืกื™ื ืœื ื™ื”ืคื›ื• ืืชื›ื ืœืคืจื•ื“ื•ืงื˜ื™ื‘ื™ื™ื ื™ื•ืชืจ (ืื•ืœื™ ืืคื™ืœื• ื”ืคื•ืš) ืืœื™ืืกื™ื ื‘ื’ื™ื˜ ื™ื›ื•ืœื™ื ืœืขื–ื•ืจ ืœื ื• ืœื”ืงืœื™ื“ ืคื—ื•ืช ื•ืœื—ืกื•ืš ืžืื™ืชื ื• ืืช ื”ืฆื•ืจืš ืœื–ื›ื•ืจ ืจืฆืคื™ื ืžืกื•ื‘ื›ื™ื ืฉืœ ืคืงื•ื“ื•ืช, ืื‘ืœ ืจื•ื‘ ื”ื–ืžืŸ ื”ื’ื“ืจืช ืืœื™ืืกื™ื ืœื ืจืง ืฉืœื ืชืขื–ื•ืจ ืœื ื• ืœืœืžื•ื“ ื’ื™ื˜ ืืœื ืืคื™ืœื• ืชืคืจื™ืข. ื‘ืžืงื•ื ืœื”ื›ื™ืจ ืืช ื”ื›ืœื™ื ื”ื‘ืกื™ืกื™ื™ื ื•ืœืงื‘ืœ ื™ื“ืข ืฉืžืžืฉื™ืš ืื™ืชื ื• ืœื›ืœ ืžืงื•ื, ืื ื—ื ื• ืžืชืจื’ืœื™ื ืœืงื™ืฆื•ืจ ื“ืจืš ื•ืœื ืžืฆืœื™ื—ื™ื ืœื”ืชืžืฆื ื›ืฉื”ืงื™ืฆื•ืจ ื ืขืœื. ื”ื ื” ื›ืžื” ืืœื™ืืกื™ื ืฉืจืื™ืชื™ ืฉื ื•ืคืœื™ื ืœืžืœื›ื•ื“ืช ื”ื–ืืช ื•ืœื›ืŸ ืœื ื”ื™ื™ืชื™ ืžื•ืกื™ืฃ ืื•ืชื ืœืงื™ืฆื•ืจื™ื ืฉืœื™, ื•ื›ืžื” ืืœื™ืืกื™ื ืฉื›ืŸ ื™ื›ื•ืœื™ื ืœืขื–ื•ืจ: ## ืœื ืžืฉืชืžืฉ - ื”ืฆื’ืช ื›ืœ ื”ืขื ืคื™ื ื”ืืœื™ืืก ื”ื–ื” ืžืฆื™ื’ ืืช ื›ืœ ื”ืขื ืคื™ื ืขื ืžื™ื“ืข ืขืœ ื›ืœ ืขื ืฃ:
git config --global alias.bra "branch -a  --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:blue)(%(committerdate:short)) [%(authorname)]' --sort=-committerdate"
ื–ื” ื ืจืื” ื™ืคื” ืื‘ืœ ืื ื™ ืžืขื“ื™ืฃ ืืช ื”ื”ืชื ื”ื’ื•ืช ื”ืจื’ื™ืœื” ืฉืœ git branch. ื›ืฉืื ื™ ื‘ื•ื“ืง ืขื ืคื™ื ืื ื™ ื›ืŸ ืจื•ืฆื” ืœื“ืขืช ื•ืœื”ื‘ื“ื™ืœ ื‘ื™ืŸ ืขื ืคื™ื ืžืงื•ืžื™ื™ื ืœืžืจื•ื—ืงื™ื ื•ืื ื™ ืชืžื™ื“ ืจื•ืฆื” ืœื“ืขืช ืื™ื–ื” ืกื•ื’ ืขื ืฃ ืื ื™ ืžื—ืคืฉ. ## ืœื ืžืฉืชืžืฉ - ื‘ื™ื˜ื•ืœ ืงื•ืžื™ื˜ ื”ืืœื™ืืก ื”ื–ื” ืžื‘ื˜ืœ ืืช ื”ืงื•ืžื™ื˜ ื”ืื—ืจื•ืŸ:
git config --global alias.uncommit 'reset --soft HEAD^'
ืœื ื”ื™ื™ืชื™ ืžืฉืชืžืฉ ื‘ื• ื›ื™ ื”ื•ื ืœื ื—ื•ืกืš ื”ืงืœื“ื” (ืœื”ืงืœื™ื“ ืืช ื” reset ื–ื” ืœื ื”ืจื‘ื” ื™ื•ืชืจ ืืจื•ืš), ืืœื ืžืฉื ื” ืžื™ืœื™ื ื•ืžืคืจื™ืข ืœื™ ืœื”ื‘ื™ืŸ ืื™ืš ื’ื™ื˜ ืขื•ื‘ื“. ื‘ืžืงื•ื ืœื”ืกืชื›ืœ ืขืœ reset ื›ืคืงื•ื“ื” ืฉืžื–ื™ื–ื” ืืช ื”ื‘ืจืื ืฅ, ืื ื™ ืจื•ืื” ืืช ื”ืžื™ืœื” uncommit ื•ื—ื•ืฉื‘ ืฉืขืฉื™ืชื™ ืžืฉื”ื• ืขื ื”ืงื•ืžื™ื˜. ## ืœื ืžืฉืชืžืฉ - ื”ื•ืกืคื” ื•ืงื•ืžื™ื˜ ื‘ืื•ืชื• ืžืฉืคื˜ ื”ืืœื™ืืก ื”ื–ื” ืžื•ืกื™ืฃ ืืช ื›ืœ ื”ืงื‘ืฆื™ื ืžืชื™ืงื™ื™ืช ื”ืขื‘ื•ื“ื” ืœ Staging Area ื•ื’ื ืคื•ืชื— ืืช ื” Editor ื›ื“ื™ ืœืขืฉื•ืช ืงื•ืžื™ื˜:
git config --global alias.ac '!git add -A && git commit
ื‘ืขื‘ื•ื“ื” ืฉืœื™ ืื ื™ ืชืžื™ื“ ืžืคืขื™ืœ status ืœืคื ื™ ื•ืื—ืจื™ ื” add ื›ื“ื™ ืœืจืื•ืช ืžื” ื‘ื“ื™ื•ืง ื”ืชื•ื•ืกืฃ ื•ืœื•ื•ื“ื ืฉื›ืœ ืงื•ืžื™ื˜ ื ืฉืžืจ ื‘ื“ื™ื•ืง ืขื ื”ืงื‘ืฆื™ื ืฉืžืชืื™ืžื™ื ืœื•. ## ืžืฉืชืžืฉ - ืงื™ืฆื•ืจื™ ื“ืจืš ื”ืกื•ื’ ื”ื™ื—ื™ื“ ืฉืœ ืืœื™ืืกื™ื ืฉื›ืŸ ืฉื•ื•ื” ืœื”ืฉืชืžืฉ ื‘ื”ื ื”ื•ื ืงื™ืฆื•ืจื™ ื“ืจืš, ืœื“ื•ื’ืžื”:
git config --global alias.st 'status -sb'
ืžืฆื™ื’ ืกื˜ื˜ื•ืก ื‘ืืžืฆืขื•ืช ื›ืชื™ื‘ืช git s ื‘ืžืงื•ื ื›ืœ ื”ืžื™ืœื” status, ื•ื’ื ืžืฆื™ื’ ื’ื™ืจืกื” ืžืงื•ืฆืจืช ืฉืœื•. ืื• ืขื•ื“ ืื—ื“ ื ื—ืžื“ ื”ื•ื:
git config --global alias.ll 'log --oneline --graph'
ืฉืžืฆื™ื’ ืœื•ื’ ืžืงื•ืฆืจ ืขื git ll. ืืœื™ืืกื™ื ื˜ื•ื‘ื™ื ื”ื ืืœื” ืฉื—ื•ืกื›ื™ื ืœื ื• ืขื‘ื•ื“ื” ืื‘ืœ ืœื ืžืฉืื™ืจื™ื ืื•ืชื ื• ืขื ืžื•ืฉื’ื™ื ืฉื’ื•ื™ื™ื ืœื’ื‘ื™ ืžื” ืฉื‘ืืžืช ืงื•ืจื” ื‘ื’ื™ื˜ ื•ืœื ืžืคืจื™ืขื™ื ืœื ื• ืœื–ื›ื•ืจ ื’ื ืืช ื”ืคืงื•ื“ื” ื”ืžืงื•ืจื™ืช.

ToCode
1 419
# ื”ื™ื•ื ืœืžื“ืชื™: ืจืงื•ืงืจืกื™ื” ื•ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืคืฉื•ื˜ื” ื•ื›ื™ืคื™ืช ื›ืฉืื ื—ื ื• ื ืฉืืจื™ื ืขืœ ื”ืฉื‘ื™ืœื™ื ื”ืžื•ื›ืจื™ื, ืื‘ืœ ื’ื ืืคืœื” ื•ืžืขื ื™ื™ื ืช ื›ืฉืื ื—ื ื• ื™ื•ืจื“ื™ื ืžื”ืฉื‘ื™ืœ ื•ืžื ืกื™ื ืœืฉืœื‘ ืืช ื”ืชื—ื‘ื™ืจ ืฉืœื” ื‘ืฆื•ืจื•ืช ืœื ืฆืคื•ื™ื•ืช. ื”ื™ื•ื ื”ื•ืคืชืขืชื™ ืœื’ืœื•ืช ืฉืืคืฉืจ ืœื›ืชื•ื‘ ืงื•ื“ ืฉื‘ื›ืœืœ ืœื ื—ืฉื‘ืชื™ ืฉื™ืขื‘ื•ื“ ืื‘ืœ ื‘ืกื•ืฃ ื”ื•ื ืขื•ืฉื” ื‘ื“ื™ื•ืง ืืช ืžื” ืฉืจืฆื™ืช ื•ืขื•ื“ ืงืฆืช. ื”ื ื” ื”ื”ื“ื‘ืงื” ื•ื”ืกื‘ืจ ืื—ืจื™ื”:
type Letter<Word extends string, R extends string[] = []> = 
  Word extends `${infer H}${infer T}` ? Letter<T, [...R, H]> : R[number];

// works! h is one of the letters in "hello"
const x: Letter<"hello"> = "h";

// compilation error! x is not one of the letters in "hello"
const y: Letter<"hello"> = "x";
ื‘ืงืฆืจื” ื”ื˜ื™ืคื•ืก Letter ืฉื”ื’ื“ืจืชื™ ืžืงื‘ืœ ืžื—ืจื•ื–ืช ื‘ืชื•ืจ Generics ื•ืžื™ื™ืฆืจ ืžืžื ื” ื˜ื™ืคืก ืฉื”ื•ื ืื™ื—ื•ื“ ืฉืœ ื›ืœ ื”ืื•ืชื™ื•ืช ื‘ืžื—ืจื•ื–ืช. ื‘ื•ืื• ื ืคืจืง ืืช ื–ื” ื›ื“ื™ ืœื”ื‘ื™ืŸ ืื™ืš ื•ืœืžื” ื–ื” ืขื•ื‘ื“: ื”ื˜ื™ืคื•ืก ื”ื•ื ื’ื ืจื™ ื•ืžืงื‘ืœ ืฉื ื™ ืคืจืžื˜ืจื™ื: Word ื• R, ืฉื–ื” ืงื™ืฆื•ืจ ืฉืœ Result. ืœ R ื™ืฉ ืขืจืš ื‘ืจื™ืจืช ืžื—ื“ืœ ืื– ืื ื™ ืœื ืžืขื‘ื™ืจ ืื•ืชื• ื›ืฉืื ื™ ืžืฉืชืžืฉ ื‘ื˜ื™ืคื•ืก. ื”ื˜ื™ืคื•ืก ืžื•ื’ื“ืจ ื‘ืชื•ืจ Conditional Type. ื–ื” ืื•ืžืจ ืฉืื Word ื‘ืืžืช ืžืชืื™ื ืœืฆื•ืจื”:
`${infer H}${infer T}`
ืื– ื”ืชื ืื™ ืืžื™ืชื™ ื•ื ืœืš ืœืกื™ืžืŸ ืฉืืœื”, ื•ืื ืœื ืื– ื”ืชื ืื™ ืฉืœื™ืœื™ ื•ื ืœืš ืœื ืงื•ื“ื•ืชื™ื™ื. ืื•ืชื” ืชื‘ื ื™ืช ืžื•ื–ืจื” ื ืงืจืืช Template Literal ื•ื”ื™ื ืžื’ื“ื™ืจื” ืžื—ืจื•ื–ืช ืฉืžื•ืจื›ื‘ืช ืžืฉื™ืจืฉื•ืจ ืฉืœ ืฉื ื™ ื˜ื™ืคื•ืกื™ื. ื‘ื’ืœืœ ืฉืื ื™ ื™ื•ื“ืข ืฉ Word ื”ื•ื ืžื—ืจื•ื–ืช, ืื– H ื• T ื”ื ื—ืœืงื™ื ืฉืœ ืื•ืชื” ืžื—ืจื•ื–ืช. ื”ื—ืœืง H ื”ื•ื ื”ืื•ืช ื”ืจืืฉื•ื ื”, ื• T ื–ื” ื”ืžืฉืš ื”ืžื™ืœื”. ืฆืจื™ืš ืœื–ื›ื•ืจ ืฉื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื›ืœ ืื•ืช ื”ื™ื ื˜ื™ืคื•ืก ืฉืžืชืื™ื ืจืง ืœืื•ืชื” ืื•ืช, ื›ืœื•ืžืจ ืื ื™ ื™ื›ื•ืœ ืœื›ืชื•ื‘:
// compiles OK
const a: "a" = "a";

// compilation error - expecting only the letter "a"
const b: "a" = "b";
ืœื›ืŸ H ื™ื”ื™ื” ื˜ื™ืคื•ืก ืฉืœ ื”ืื•ืช ื”ืจืืฉื•ื ื” ื‘ืžื—ืจื•ื–ืช, ื• T ื™ื”ื™ื” ื˜ื™ืคื•ืก ืฉืœ ืžื—ืจื•ื–ืช ืฉืžื•ืจื›ื‘ืช ืžื›ืœ ื”ืื•ืชื™ื•ืช ืคืจื˜ ืœืจืืฉื•ื ื”. ื”ืžื™ืœื” hello ืžืชืื™ืžื” ืœื–ื” ื•ืขื‘ื•ืจื” ื” H ื™ื”ื™ื” ื”ืื•ืช h ืงื˜ื ื” ื•ื” T ื™ื”ื™ื” ื”ืžื—ืจื•ื–ืช ello. ื‘ื’ืœืœ ืฉื”ืžื—ืจื•ื–ืช ืžืชืื™ืžื” ืื ื—ื ื• ื”ื•ืœื›ื™ื ืœื—ืœืง ืฉืื—ืจื™ ื”ืกื™ืžืŸ ืฉืืœื” ื•ื”ื•ื ืื•ืžืจ ืฉื”ื’ื“ืจืช ื”ื˜ื™ืคื•ืก ื”ื™ื ืจืงื•ืจืกื™ื‘ื™ืช:
Letter<T, [...R, H]>
ื”ื˜ื™ืคื•ืก ืžื•ื’ื“ืจ ืœื”ื™ื•ืช Letter ืฉืœ T, ืฉื–ื” ืจืง ื”ืกื•ืฃ ืฉืœ ื”ืžื™ืœื”, ืื‘ืœ ื”ืคืขื ื”ืคืจืžื˜ืจ ื”ืฉื ื™ R ืžืงื‘ืœ ืขืจืš ื”ืชื—ืœืชื™ - ื›ืœ ืžื” ืฉื”ื™ื” ื‘ื• ืงื•ื“ื ืคืœื•ืก ื”ื˜ื™ืคื•ืก H ื›ืœื•ืžืจ ื”ืื•ืช h ื”ืงื˜ื ื”. ืœื›ืŸ ื”ืฉืœื‘ ื”ืจืืฉื•ืŸ ื‘ืจืงื•ืจืกื™ื” ื”ื™ื” ื”ืžืขื‘ืจ:
Letter<"hello", []> => Letter<"ello", ["h"]>
ื‘ื’ืœืœ ืฉื–ื• ืจืงื•ืจืกื™ื” ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื™ืžืฉื™ืš ืœืคืขื ื— ืขื•ื“ ื•ืขื•ื“ ืฆืขื“ื™ื ืฉืœื” ืขื“ ืฉื”ืžื—ืจื•ื–ืช ืชืชืจื•ืงืŸ ื•ืื– ื ืงื‘ืœ:
Letter<"", ["h", "e", "l", "l", "o"]>
ื•ืื– ืžื’ื™ืขื™ื ืœื—ืœืง ืฉืื—ืจื™ ื”ื ืงื•ื“ื•ืชื™ื™ื:
R[number]
ื‘ื’ืœืœ ืฉ R ื”ื•ื ืžืขืจืš ืขื ืื•ืชื™ื•ืช ืฉื™ื“ื•ืขื•ืช ื›ื•ืœืŸ ื‘ื–ืžืŸ ืงื•ืžืคื™ืœืฆื™ื”, ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื“ื‘ืจ ืขืœ ื”ื˜ื™ืคื•ืก R[0] ืฉื”ื•ื ื”ืื•ืช h, ืื• ื”ื˜ื™ืคื•ืก R[1] ืฉื”ื•ื ื”ืื•ืช e. ืื ื—ื ื• ื’ื ื™ื›ื•ืœื™ื ืœื“ื‘ืจ ืขืœ ื”ื˜ื™ืคื•ืก R[number] ืฉื”ื•ื ืื™ื—ื•ื“ ืฉืœ ื›ืœ ื”ืื•ืชื™ื•ืช ื‘ืžืขืจืš, ื›ื™ number ื™ื›ื•ืœ ืœื”ืชืื™ื ืœื›ืœ ืžืกืคืจ ืฉื”ื•ื ืื™ื ื“ืงืก ื—ื•ืงื™ ื‘ืžืขืจืš. ื”ืชื•ืฆืื” ื›ืžื• ืฉื›ื‘ืจ ื‘ื˜ื— ื”ื‘ื ืชื ื”ื™ื ื”ื˜ื™ืคื•ืก ืฉืžื–ื”ื” ืฉืžืฉืชื ื” ืงื™ื‘ืœ ืื•ืช ืžืชื•ืš ื”ืžื™ืœื”. ืืช ื”ืจืขื™ื•ืŸ ืงื™ื‘ืœืชื™ ืžื•ื•ื™ืœื™ืื ืงื ื“ื™ืœื•ืŸ, ื•ืืชื ืžื•ื–ืžื ื™ื ืœื”ืžืฉื™ืš ืœืจืื•ืช ืื•ืชื• ื’ื ื‘ื•ื™ื“ืื• ื‘ื• ื”ื•ื ื‘ื•ื ื” ืžืฉื—ืง ื•ื•ืจื“ืœ ืฉืœื ื‘ืขื–ืจืช ื˜ื™ืคื•ืกื™ื ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜: https://www.youtube.com/watch?v=JT30j4nhej4