рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг: 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
ред