ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Postlar arxiv
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-ืื ืืืชื ืืืื ืืืฉืชืืฉ ืืื ืืื? ืืื ืื ืืืืื ืืื ืืช ืฉืืืื ืชืฉืชื ื ืืขืชืื? ืืื ืืฉ ืืืฉืื ืฉืจืืฆื ืืืื ืืฉื ืืช ืืช ืื?
ื ืงืืืช ืืืชืืื ืฉื ืืฉืืืืช ืืื ืืคืชืขื. ืืคืชืขื ืืื ืืื ืืฆืคื ืืฉืืืื ื ืืชืืืื ืืืืืื, ืืื ืชืืื ืืจืื ืืช ืืืืืื ืืื ืืืืื ืก ืืืชืจ ืืขืืืง.1 419
# ืืืืืจื ืืงืืขืื
ืืขืืืื ืขื ืงืื ืงืืื, ืืืจื ืฉืืฆืืืชื ืืืจืื ืืงืื ืืขืฉืืช ืืช ืื ืฉืืชื ืจืืฆืื ืืืชื ืืชืืืืื ืืืจืืืฉ ืื ืื ืืืชื, ืืจืื ืืืื ืืื ืืืชืืื ืืืกืชืื ืืืืืจื ืืงืืขืื - ืื ืืืืืืืช ืืืฉืคืืขืืช ืขื ืืงืื? ืื ืื ืืข ืืืชื? ืืืื ืืืจืื ืขืืืืื ืืื ืฉืื ืขืืืืื?
ืืจืื ืคืขืืื ืืคืขืจ ืืื ืฉืชื ืืจืืืช ืืื ืขืฆืื.
ืืืืื ืงืื ื ืืืขืืื ืฉื ืจืืืงื - ืืื ืืคืืฆ'ืจืื ืืืืฉืื ืฉื ืจืืืงื 17 ืืื ืฉืื ืฆืจืื ืืืชืื:
import React from 'react';
ืืชืืืืช ืื ืงืืืฅ JSX. ืจืืื ื ืฉืืื ื ืขื ืืืืกืืื ืืืื ืืขืฆืจื ื ืฉื, ืืืงืื ืืืฉ ืคืฉืื ืืคืกืงื ื ืืืชืื ืืช ื import ืืื. ืืืช ืืจืื ืืจืืฉืื ื.
ืจืืช ืืืืืจื ืืงืืขืื ืืืจ ืืืืจืช ืขื ืืกืืืืช ืืืืื ืืืฉืื ืืชืืืฅ ืืืื ืืก ืืช ืืคืืฆ'ืจ ืืื, ืืืขืจื ืื ืืกืฃ ืฉืืคืืฆ'ืจ ืืื ื ืืชื ืืื ืฉืื ืฉืืืชืืื ืืืื ืืชืื ืืืงืืกืืกืื ืฉื ืจืืืงื. ืกืืกืืืื ืืจืงืื' ืืื ืืืื ืงืจืื ืืชืื ืืกืื ืืกืืจ ืื ืืจืื ืืืืชื ืชืงืืคื ืขื ืืืืืื ืืืืืืจื ืืงืืขืื ืฉื ืืืืืื ืืื:
https://github.com/reactjs/rfcs/blob/createlement-rfc/text/0000-create-element-changes.md
ืงืจืืื ืฉื ืืืชื ืืกืื ืืฉื ื ืืืืจื ืืช ืืืื ื ืฉื ืื ืงืจื ืฉื ืืขืืืจืช ืืืืฉ ืชืืื ื ืืืื ืขื ืืคืืฆ'ืจ ืืืงืฉืจ ืฉืื ืขื ืืืืืืช ืืืจืืช ืฉื ืจืืืงื.
ืืฉ ืื ืฉืื ืฉืืืฆืฆื ืืืืืจื ืืงืืขืื ืืืืืื ืืืชื ืืืชืจ ืืืืฆืื ืขืฆืื; ืืฆื ืจืืื ื ืืืฆืืื ืืืกืชืื ืืืืืจื ืืงืืขืื ืืืืชืขื ืืื ืืื ืฉืืฉ ืฉื ืืืช ืืืืื ืืช ืฉืฆืจืื ืืคืชื. ืืืื ืืืืจื ืฉืืื ืืช ืืืฉืงืขื.1 419
# ืื ืขืืฉืื ืขื ืืกืืื ืคืกืืืืืืืืื
ืืกืืื ืคืกืืืืืืืืื ืื ืืฉืื ืื ื ืื ืืกืืืืื ืืฉืงืื ืืคืฉืจืืช ืืกืืืืช, ืืืจืืช ืฉืืืชื ืืคืฉืจืืช ืืืื ืชืขืืืจ ืื ื ืืืชืงืื.
ืืืืื ืืืืืื ืฉืืืืฅ ืืชืื ืืช ืชืืื ืื ืืื ืฉืืฉ ืื ืืกืฃ ืืฆื ืืื ืื ืืืื ืืงื ืืช ืืืจื ืื "ืืืืืจืื ืืืืจืคืื ืืืื ืืฆื ืฉืื ื ืืฉืชืขืื ืืืฉืื ืชื", ืืืจืืช ืฉืืืืจ ืืืฉืื ืชื ืืืื ืขืืืจื ืืื ืืืชืจ ืืฉืืืจืืช (ืื ืื ืืืื ืืจืืืืช ืฉืืืื ืืื ืฆืืืจ ืขื ืืืืกืืื), ืื ืืื ืืจ ืืืืืจ ืฉืื ืืืืจื ืืืฉืืจื ืืืกืืช ืืืืืื ืืืืืจื ืืงื ืื.
ืืฉื ืืื ืก ืืขืืื ืืืงืฆืืขื ื ืืื ืืืืืื ืืืืืืืช ืืืชืจ ืงืจืืืืช, ืืืืืื ืืคืฉืจ ืืืฉืื ืขื ืืชืื ืชืช ืฉื ืฉืืจืช ืืขืืืื ืฉืืื ืื ืืืืืช ืื ืืื ืื ืืืฆืืช ืืืคืฆืื ืืืชืจ ืืืื, ืืืจืืช ืฉืืื ืืืืขืช ืฉืืกืืื ืฉืืื ืื ืืชืงืืืช ืืขืืืื ืืืื ืืืชืจ ืืื ืคืขืจื ืืืข, ืืืืจื ืืืืืื ืฉืื ืืกืืืจ ืืช ืืคืขืจืื ืืืื ืื ืืขืืื ืืช ืืขืืืื ืืืืฉืงืืข ืืื ืืืืฉืื ืืืฉืืช ืืืืื. ืืืชื ืืชืื ืชืช ืขืฉืืื ืืืขืืืฃ ืืืืฉืืจ ืชืงืืขื ืืืงืื ืื ืืื ืื ืืกืืืืช ืืฉืงืื ืืคืืื ืืช ืืืคืฉืจืืช ืืขืืื ืืืื ืืืืฉืื ืืื ืืืขืช ืื ืืงืจื ืืืจื.
ืืืฉื ืฆืืื ืืงืื ื ืืื ืืืืจ ืขื ืืืชืื ืช ืฉืื ืืขืื ืขื ืืขืชื ืืืชืื ืืืืงืืช, ืื ืืืืงืืช ืื ืืืืื ืืื, ืืืจืืช ืฉืืื ืืขืืื ืื ืืฉืงืืข ืืช ืืืื ืืืืืื ืืื ืืืชืื ืืืืงืืช ื ืืื; ืื ืืืชืื ืชืช ืฉืื ืชืขืื ืขื ืืขืชื ืืงืืช ืงืืจืก ืื "ืื ืืืืจืื ืืื ืฉืื ืืื ืืื ืืืชื ืงืื ืืื ืืืื".
ืืืกืืืื ืคืกืืืืืืืืื ืื ื ืจืืื ืืื ืืืกืื, ืืื ืฉืื ืคืฉืื ืืกืชืืจืื ืืช ืืืคืฉืจืืช ืฉืืืืืจืืื. ืืฉืื ืื ื ืืชืื ืืฆืืืช ืืื ืกืื ืืืฉืื ืื ืืฆืขื ืืื, ืื ืื ื ืื ืืืืืื ืืืืืื ืืขืฉืืช ืืช ืืฆืขื ืืืกืื, ืืืคืืื ืื ืืืฉืื ืืฆืืข ืื ื ืืืืืง ืืช ืื ืื ืื ื ื ืืืื ืื ืืฆื ืืื ืกืืฃ ืชืืจืืฆืื ืืื ืื ืื ืืคืฉืจื.
ืืื ืืฉ ืื ืืืฉืืช ืืืืืช: ืืืจืืช ืืืืื ืฉืื ืืขืืจืจืื, ืืืืจืืช ืฉืื ืืคืฉืจ ืืืฉ ืืจืืืช ืืช ืืืจื ืฉืื ืืืกืืื, ืืช ืืืืกืื ืืคืกืืืืืืื ืขืฆืื ืืืกืืช ืงื ืืจืืืช. ืืืฉืืื ืขื ืืืจ ืื ืืืจื, ืืขืืื ืืช ืืืขืื ืืืืงืฉืื ืืืืชื ืืืจ ืืืฆืืข ืืื ืฉืืืชืจ ืืคืฉืจืืืืช ืืืื ืฉืืืชืจ ืืืืืืช. ืืฉืชืจืื ืฉืืืช ืืืคืฉืจืืืืช ืืืฉ ืืืืืื ืืชืื, ืืฉ ืกืืืื ืฉืืืืืชื ืืืกืื ืคืกืืืืืืื.
ืืืจื ืฉืืืืื ืืชืืืื ืืขืืืื ืืงืฉื ืฉื ืืคืจืง ืืช ืืืชื ืืืกืื, ืืืคืฉ ื ืชืื ืื ืืืืืงืื, ืืืืื ืื ืืืืชื ืืคืฉืจืืช ืื ืื ืืคืืื ืืืชื ืืื ืฆืจืื ืืงืจืืช ืืื ืฉืืืื ืืืืืช ืขื ืืคืื. ืฉืืื ืืืืจ ืขื ืขืฆืืื ืขื ืืคืืื ืฆืืื ืฉื ืื ืืงืจื ืืืจื.
ืื ืื ืื ื ืืืืจ ืืืืชื ืืชืื ืชืช ืฉืคืืืืช ืืขืืื ืืช ืืขืืืื, ืืืฉืืืฉืื ืืฆืืข ืื ืืช ืื ืืช ืืื ื ืืืฆืช ืขื ืืืื "ืื ืคืชืืื ืืื ืื ื ืืืืืช ืืช ืืืกืฃ" - ืฉืืื ืืฉืืื: ืืื ืืกืฃ ืื ื ืืืืช ืฆืจืืื ืืืืืฉ? ืืื ืื ื ืืืืื ืืืจืื ืชืืื ืืช ืืืกืืื ืฉืชืขืืืจ ืื ืืขืืืจ ืืช ืืืืืฉืื ืืงืจืืืื? ืฉืืื ืื ืืืืืืจ ืฉืคืขื ืืฉืืช ืฉื ื ืฉืืื ืืงืืจืก ืืื ืืืืื ืืืืืช ืืชืื ืชืช, ืืขืื ืฉืืืืช ืขืืื ืืกืฃ, ืื ืืื ืื ืื ืื ืืืืจ ืืขืฉืืช ืืฉืื ืืืื ืฉืื? ืืืื ืืฉืื ืืืืจ ืขื ืืืฉืืืจืช ืฉืชืืื ืื ืืืจื ืฉืชืฉืื ืืืืื ืืชืืืขื ืืจืื ืืืชืจ ืืืื ื ืืจืืืื ืืช ืืืืื.
ืืืชืจ ืืื ืคืขืืื ื ืชืงืขืชื ืขื ืืืกืืืื ืคืกืืืืืืืืื ืืืืฉืื ืืืคืืื ืฉื ืื, ืืื ื ืืืื ืฉืื ืืื ืืฉ ื ืืกืืื ืขื ืืืื. ืื ืคืขื ืืืืช, ืืฉืืืืกืื ื ืฉืืจ ืืืฆืืืชื ืืืื ืงืืืื, ืืฆืขืจ ืืืืื ืืื "ืืื ืื ืขืฉืืชื ืืช ืื ืงืืื". ืื ืืืื ืืขืืื ืืื ืืชืืจืืฅ ืืื ืืื ืฉืืคืฉืจ ืืืงืฉ.
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 ืชืืื ืืืื ืืืื ืืืืืง ืืช ืืืืืืงื ืฉืืื ืืงืื ืืขืืจืช ืคืื ืงืฆืืืช ืืืืงื ืืคื ื ืฉืืคืฉืจ ืืืื ืืืฉืชืืฉ ืืขืจื.1 419
ืืื ืฉืคืกืคืกื ืืงืืื ืฉื ืืืืื ืจ ืจืืืงื ื ืืืืื ืฉืืชืงืืื ืืืื ืืืืฉื ืืืืจืื:
https://www.youtube.com/watch?v=ou_9QtBC2_M
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-ืื ืื ืื ืืจื ืืืื ืืืืฆื ืืกืฃ. ื ืกื ืืืฆืื ืืืื ืขืจืืื ื ืืชื ืื ืชืืฆืืืช ืื ื ืืื ืืช, ืืืชืงื ืืืืฆืขืืช ืืืืคืช ืืืืฉืื ืืืกืคืจืื ืฉืืืื ืฉืืืืฆืืื ืกื ืืื.1 419
# ืื ืืฉืืชื ืขื ืื
ืื ืืฉืืชื ืขื ืื ืฉืืฉืืฉื ืื ืืชืืืช ืืืื ืฆืจืื ืืืงืฉ ืกืืกืื, ืื ืืจืื ืืืชืจืื ืืคืฉืจ ืืืืืฅ "ืฉืืืชื ืกืืกืื" ืืืงืื ืงืืฉืืจ ืืืืคืืก ืกืืกืื ืืืืื.
ืื ืืฉืืชื ืขื ืื ืฉืืืื ื ืืืื ืืืชืืืืฅ ืื ืืื ืืชืื flex-box ืื ืืจืืจืช ืืืืื ืฉื flex-shrink ืืื 1.
ืื ืืฉืืชื ืขื ืื ืฉืืืืช ืืฉืืืืชืืช ืฉืืชืืชื ืชืืืื ืืืกืคืจ ืืฉืืจืืช ืืืืื.
ืื ืืฉืืชื ืฉืงืืืฅ ืืืื ืืืืข ืืืื ืืืื.
ืื ืื ืื ืื ืฉืื ืื ื ืืื ืืกืื ืืืขืจืืช ืืืื ืืืืฉืืจ ืืืจืืื ืฉืื ืืฉืื ื ืขืืืื. ืืืฉื ืืืช ืฉืื ืขืืืืช ืืืชืืืื ืขื ืืคืื ืืื ืื ืกืืช ืื ืืืฉืื ืขื ืืื ืืจืืฉ, ืืชืื ื ืขื ืืคืจืืื ืืื ืงืื ืื ืืืชืช ืืืื ืกืืฃ ืื ืฉื ืืงืฆืืข ืืขืืืจ ืขื ืืชืืื ืืืช ืืคื ื ืฉืืขืืืจืื ืืืชื ืืคืืชืื. ืื ืื ืขืืื ืื ืื ืื ืฉื ืืงืฆืืข ืืืืื ืืคืกืคืกืื ืืื ืขืืื ืืชืืื ื ืืฉืชื ื ืื ืืืื.
ืืืฉื ืืืชืจ ืืืื ืืฉืืืช ืืื ืืืงืจ ืืื ืืจืืฉ ืืืื ื ืืื ืืช ืืชืงื ืืืื ืจืืฆื: ืื ืื ื ืื ืืืืชืจืื ืขื ืชืื ืื. ืืฉื ืขืื ืืขืจืืช ืื ืื ื ื ืืืืง ืืืคื ืืืืืื ืฉืื ื ืฉืืจืื, ืืืคื ืืืืืืืื ื ืฉืืจืื, ื ืคืขืื ืืืื ืืืืืืืืื ืฉืืขืืจื ืื ื ืืืฆืื ืืขืืืช ื ืคืืฆืืช ืืงืื ืื ืืืจ ืืช ืืงืื ืืืืืื ืฉืื ื ืืกืคืืง ืืื ืืื ืื ืืคืฉื ืืืืจืื ืืจืืจืื. ืืืืชื ืืื, ืืฉืืืฉืื ืืืืื ืขื ืชืงืื ืืชืื ืชืื ืืืืื ืื ืืืงืืื ืืื ืื ืืชืืืืืื. ืื ืื ื ืืฉืชืืฉืื ืืื ืืืืืื ืืช ืืืืื "ืขื ืื ืื ืืฉืืชื ืืคืขื" ืืืืกืืคืื ืืฆ'ืง ืืืกื ืืงืจืืช ืืคืขื ืืืื.
1 419
# ืืืืื ืื ืืฉืื
ืื ืืฉ ืืืจื ืืืช ืฉืืืืื ืฉืืื ืืงืืช ืงืืจืก ืขื ื ืืฉื ืืื ืืืกืชืคืง ืืงืจืืืช ืชืืขืื ืื ืืืืื ื ืืื ืฉื ืกืืจ ืืืืจืื ืืืื ื ืฉื ืื ืืฉืื ืืขื ืื ืืคืฉืจ ืืืืชืจ.
ืืืื ืืืขืืช ืืื ื ืคืืฆื ืืฉืืืงืืื ืงืืจืก ืืื ืืืฉืืืช ืืืจื ืื ืืืงืฃ ืฉืื.
ืื ื ืืืื ืืืขืืืจ ืืืื ืฉืืืื ืืืชืืืช ืืืฉืืื ืจืืืงื ืืื ืืืฉืชืืฉ ื Context, ืืื Code Splitting, ืืื Class Components, ืืื CSS in JS ืืืื ืขืื ืขืฉืจืืช ืคืืฆ'ืจืื ืฉืื, ืืื ืขื ืขืื ืืื ืืืืืืืช ืจืืืช ื ืืกืคืืช. ืืคืขืจ ืืื ืงืืจืก ืืชืืขืื ืืื ืชืืื ืืืื ืืื ืืื ืฆืจืื ืืืืืช.
ืงืืจืก ืืื ืขืืืจ ืืืืื ืื ืืฉืื, ืืืชืืงื ืืืืจ ืืืฉืื ืืื ืืืชืช ืื ืืช ืืืืืื ืืช ืืขืฉืืช ืืฉืื ืืืขืื ืขื ืื ืฉืืืืชื. ืื ื ืื ืืืคืฉ ืงืืจืก ืฉืืืืืฃ ืชืืขืื ืืื ืืื ืฉืืืจืื ืืืื ืืืื ืืฉืืืข ืขืื ืืืงืจืื ืืช ืืชืืขืื.
ืื ืืชืืฆืื ืฉื ืืืืื ืืืชืจ ืืื ืืืืจ ืืื ืื ืฉืืืืขืื ืืืชืจ ืืื, ืืื ืฉืืื ืืชืขืจืื ืืื ืืฆืืืืื ืืืชืื ืืคืืื ืืช ืืืืจืื ืืืกืืกืืื ืืื ืฉืฆืจืื.
1 419
ืื ืืืจืื ืขืื 15 ืืงืืช (ืืฉืขื ืขืฉืจ) ื ืชืืื ืืืืื ืจ ืืืืจืืช ืขื ืจืืืงื ื ืืืืื. ืืืืื ืื ืืืฆืืจืฃ ืืงืืฉืืจ:
https://us06web.zoom.us/j/85267945481?pwd=NDNPSUNuQlVocHBaZlBrdElLYkFZUT09
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.
ืืืืืกืื ืืืืื ืื ืืื ืฉืืืกืืื ืื ื ืขืืืื ืืื ืื ืืฉืืืจืื ืืืชื ื ืขื ืืืฉืืื ืฉืืืืื ืืืื ืื ืฉืืืืช ืงืืจื ืืืื ืืื ืืคืจืืขืื ืื ื ืืืืืจ ืื ืืช ืืคืงืืื ืืืงืืจืืช.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
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
