ΠΠ΅ΡΡΠΈΡ TypeScript: 2.1.4
ΠΠΎΠ΄
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² TS 2.0
type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
function iExpectDigit(d:Digit)
{ }
for (let k: Digit = 1; k < 10; k++) {
iExpectDigit(k); //Error, because K is number
}
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ k++
- ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠΎΠΉ ΠΈ ΡΠΈΡΠ»ΠΎΠΌ, ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ», ΡΡΠΎ k
ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΈΡΠ»ΠΎΠΌ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΠΏΡΠΈΡΠ΅Π», ΡΡΠΎ
for (let k: Digit = 1; k < 10; k = <Digit>(k + 1)) {
// k is digit
}
ΠΈΠ»ΠΈ
// in some module
export let digits: Digit[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let k of digits)
{
// k is digit
}
ΠΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΌΠ΅Π½Π΅Π΅ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΡΠΉ.
ΠΠΎΠΏΡΠΎΡ
ΠΡΡΡ Π»ΠΈ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°?
Π― Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ Π·Π° Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ, Ρ Π΄ΡΠΌΠ°Ρ, Π±ΡΠ»ΠΎ Π±Ρ ΡΠΌΠ΅ΡΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅
type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
function iExpectDigit(d: Digit) { }
function isDigit(n: number): n is Digit {
return n > -1 && n < 10 && n === Math.trunc(n);
}
for (let k = 0; isDigit(k); k++) {
iExpectDigit(k);
}
Π― Π³ΠΎΠ²ΠΎΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ Π²ΡΡ
ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΠΊΠ»Π° Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ k
Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 10
ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Digit
.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ Π·Π° Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ, Ρ Π΄ΡΠΌΠ°Ρ, Π±ΡΠ»ΠΎ Π±Ρ ΡΠΌΠ΅ΡΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅
Π― Π³ΠΎΠ²ΠΎΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΠΊΠ»Π° Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅
k
Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅10
ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡDigit
.