Typescript: рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдЕрднрд┐рдХрдерди рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рд╕рд┐рддре░ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг: 2.1.0-dev.20160912

рдХреЛрдб

// A *self-contained* demonstration of the problem follows...
const types = {
    test: <'test'>'test',
    test2: 'test2' as 'test2'
} // type: {test: string, test2:string}

let a = <'test'>'test'  // type string

рд╕рдВрднрд╡рддрдГ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд: https://github.com/Microsoft/TypeScript/pull/10676

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@wallverb рд╕рд╣рдордд рд╣реБрдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ _some_ рдлрд╝реЙрд░реНрдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдмрд┐рдирд╛ рдЪреМрдбрд╝рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдкрд╢реНрдЪрдЧрд╛рдореА рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣рдореЗрдВ рдЙрд╕ рдЕрд░реНрде рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдВ, рдпрд╣ # 10676 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдкрд╣рд▓реЗ, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ "рд╢рд╛рдмреНрджрд┐рдХ рд╕рдВрджрд░реНрднреЛрдВ" рдореЗрдВ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╛рд╡реЗ рдХреЗ рдмрд╛рдж) рдФрд░ рд╣рдо рдмрд╕ рдПрдХ рд╡рд╕реНрддреБ рд╢рд╛рдмреНрджрд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрдиреБрдорд╛рдирд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдЯреАрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЕрдм, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдо _widen_ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдкрд░рд╕реНрдкрд░ рд╕реНрдерд╛рдиреЛрдВ (рдЬреИрд╕реЗ рдХрд┐ рд╡рд╕реНрддреБ рд╢рд╛рдмреНрджрд┐рдХ рдЧреБрдгреЛрдВ) рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рдирд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рддреЛ, рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрднрд┐рдХрдерди рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИ (рдП) рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рдХрд╛рд░ рдФрд░ (рдмреА) рдХреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрднрд┐рдХрдерди рдХреЗ рдмрд╛рдж рд╕рдВрдкреВрд░реНрдг рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЪреМрдбрд╝рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдмреЗрд╣рддрд░ рдкрд╢реНрдЪрдЧрд╛рдореА рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдо _not_ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд╢реБрд░реБрдЖрддреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИ, рддреЛ рдПрдХ рдЕрдиреБрдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЛ рдЪреМрдбрд╝рд╛ рдХрд░рдирд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЕрдиреНрдпрдерд╛ рдореБрдЦрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

@ahejlsberg рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк _not_ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИ - рдПрдХ рдЕрдиреБрдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЛ рдЪреМрдбрд╝рд╛ рдХрд░рдирд╛ - рдФрд░ рд╕рд╣рдордд - рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд┐рдВрджреБ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ :)

рдПрдХ рдФрд░ рдЖрдо рдорд╛рдорд▓рд╛ рдЬреЛ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛:

function test(style: { align: 'left' | 'right', size: number }) {
}

const style = {
    align: 'left' as 'left',
    size: 5
}

test(style)

рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреЗрдХреНрд╕ https://github.com/Microsoft/TypeScript/issues/10195 рдорджрдж рдорд┐рд▓реЗрдЧреА - рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдХрднреА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдмрди рдЬрд╛рдПрдЧрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рд╣рд░ рдмрд╛рдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

@wallverb рд╕рд╣рдордд рд╣реБрдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ _some_ рдлрд╝реЙрд░реНрдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдмрд┐рдирд╛ рдЪреМрдбрд╝рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдкрд╢реНрдЪрдЧрд╛рдореА рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣рдореЗрдВ рдЙрд╕ рдЕрд░реНрде рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

weswigham picture weswigham  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Antony-Jones picture Antony-Jones  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

DanielRosenwasser picture DanielRosenwasser  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

seanzer picture seanzer  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zhuravlikjb picture zhuravlikjb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ