Tslint: рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдУрд╡рд░-рдЯрд╛рдЗрдк-рд╢рд╛рдмреНрджрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рд╕рд┐рддре░ 2017  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: palantir/tslint

рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдбреЙрдХреНрд╕ рдХрд╣рддреЗ рд╣реИрдВ

рдЪреВрдВрдХрд┐ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдПрдХ рдЖрджрд░реНрд╢ рдЧреБрдг рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдкрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╢реВрдиреНрдп рдЗрд░рд╛рджреЗ рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рдХрд╛рд░ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдЗрд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

API Breaking Change Enhancement

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

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрд╣реБрдд рджреГрдврд╝рддрд╛ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдЧрд▓рдд рд╣реИред

рдпрд╣рд╛рдБ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдРрд╕реЗ рдХрдИ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рд╣реЛрдВрдЧреЗ рдФрд░ рдХреБрдЫ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрдВрдЧреЗред рдХреЛрдИ рдЗрд╕ рд╡рд░реНрдЧ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдПрдЧрд╛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ рдХрд┐ рдмрд┐рд▓реНрд▓реА рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХрд╣реАрдВ рднреА рд▓рд╛рдЧреВ/рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реВрдВ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдФрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рдл рд╣реЛрдЧрд╛, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ (рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдЕрдЧрд░ рд╕рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдирд╛рдо рд╣реИ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЙрдХреНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдореБрджреНрджрд╛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдореИрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдирд┐рд░реНрдгрдп рдпрд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдмрдЬрд╛рдп рдПрдХ рдирд┐рдпрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдбреЙрдХреНрд╕ рдЖрдкрдХреЛ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдпрд╛ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ?

рдЕрдиреБрд╢рдВрд╕рд┐рдд.ts рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдУрд╡рд░-рдЯрд╛рдЗрдк-рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕рддреНрдп рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдЭреВрдард╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдпрд╛ рдмрдЧ рдХрд╛ рдЧрдарди рдХрд░рддрд╛ рд╣реИ :-)

рд╕рднреА рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкреНрд░реАрд╕реЗрдЯ рдХреА рд░рд╛рдп рдХреЗ рдмрд╛рджред рдЗрд╕рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкреНрд░реАрд╕реЗрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдЕрдиреБрд╢рдВрд╕рд╛ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯреНрдпреВрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрд╕реЗ рднреА, рдирд┐рдпрдо рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ред рддреЛ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреА рдЙрдореНрдореАрдж рди рдХрд░реЗрдВред


рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: interface-over-type-literal рдХреЗрд╡рд▓ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИред

type Foo = {foo: number}; // The rule disallows this
interface Foo {foo: number} // and fixes it to this

let obj: {foo: number}; // This is still allowed

рдЪреВрдВрдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдирд╛рдо рдФрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ (рд▓рдЧрднрдЧ) рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдк рдкреНрд░рдХрд╛рд░ рдЙрдкрдирд╛рдо рдХреЛ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдЯ рдкрд░: рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ рдЬрдмрдХрд┐ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░ рдЬреИрд╕реЗ рдЙрдкрдирд╛рдо рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреБрди: рдЧрдгрдирд╛ рдХрд┐рдП рдЬрд╛рддреЗ рдереЗред рддреЛ рдкреНрд░рдХрд╛рд░ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдХрд▓рди рд╕рдордп рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЧрд▓реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рд▓рдЧрднрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрд╣реБрдд рджреГрдврд╝рддрд╛ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдЧрд▓рдд рд╣реИред

рдпрд╣рд╛рдБ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдРрд╕реЗ рдХрдИ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рд╣реЛрдВрдЧреЗ рдФрд░ рдХреБрдЫ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрдВрдЧреЗред рдХреЛрдИ рдЗрд╕ рд╡рд░реНрдЧ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдПрдЧрд╛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ рдХрд┐ рдмрд┐рд▓реНрд▓реА рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХрд╣реАрдВ рднреА рд▓рд╛рдЧреВ/рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реВрдВ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдФрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рдл рд╣реЛрдЧрд╛, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ (рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдЕрдЧрд░ рд╕рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдирд╛рдо рд╣реИ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЙрдХреНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдореБрджреНрджрд╛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдореИрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдирд┐рд░реНрдгрдп рдпрд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдмрдЬрд╛рдп рдПрдХ рдирд┐рдпрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдбреЙрдХреНрд╕ рдЖрдкрдХреЛ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдирд┐рдпрдо рдареАрдХ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд░рдХ рдореЗрдВ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ рдЗрд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧрд▓рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рдореИрдВрдиреЗ рдЕрдиреНрдп рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рд╡рд┐рдзрд┐рдпреЛрдВ/рдХрд╛рд░реНрдпреЛрдВ/рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣", рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде/ рдмрддрдЦ рдкреНрд░рдХрд╛рд░ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ TSLint рдирд┐рдпрдо "рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдЬрд░реВрд░реА-рдШреЛрд╖рдгрд╛-рдХреЗрд╡рд▓-рдлрд╝рдВрдХреНрд╢рдВрд╕" рдпрд╛ рдХрдо рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ "рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдЬрд░реВрд░реА-рдШреЛрд╖рдгрд╛-рдХрдо-рд╕реЗ-рдХрдо-рдПрдХ-рдлрд╝рдВрдХреНрд╢рди" рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВред

рд╢реБрджреНрдз рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЯрд╛рдЗрдк рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ & рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдирд╛рдо "T" рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП :-)

@navels рдореИрдВ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ tslint:recommended рдХреЛ рдЗрд╕ рдЕрддрд┐-рд╡рд┐рдЪрд╛рд░рд┐рдд рдирд┐рдпрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП

рдореИрдВ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдХреИрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

@sibelius рдЖрдкрдХреЗ tslint.json рдореЗрдВ, "rules" рдХреЗ рддрд╣рдд, рдЗрд╕реЗ false рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ:

{
    "extends": ["tslint:recommended"],
    "rules": {
        "interface-over-type-literal": false
    }
}

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд┐рдпрдореЛрдВ рдореЗрдВ рдирд┐рдпрдо рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдкрд░ рдирдЬрд╝рд░ рд░рдЦ рд░рд╣реА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ TSLint рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ StackOverflow рдпрд╛ Gitter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдпрд╣рд╛рдБ рдХреЛрдИ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ https://medium.com/@martin_hotell/interface -vs-type-alias-in-typescript-2-7-2a8f1777af4c

рдирд┐рдпрдо рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрдЬрд╛рдп рдореБрдЭреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реВрдВрдЧрд╛ рдпрджрд┐ рдореИрдВ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ Props рдпрд╛ State рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЕрд╡рдпрд╡ред

рдореИрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХрдо рд╕реЗ рдХрдо рдУрдУрдкреА рдХреЛрдб рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧ рдЗрд╕рдХреЗ рдкреНрд░рддрд┐ рдЖрдХрд░реНрд╖рд┐рдд рд╣реЛрдВред

@dandrei рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрдм рдореИрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдореИрдВ рднреА рдУрдУрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛)ред

рд╣рд╛рдБ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИ рдФрд░ рдЖрдИрдПрдордУ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдСрдЯреЛ-рдлрд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХреЗрдВред

рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдб рддреЛрдбрд╝рддреА рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛:

type Foo = {
  foo: string
}

interface IndexedObject {
  [key: string]: string
}

function useIndexedObject(object: IndexedObject) {}

const foo: Foo = {foo: "foo"}
useIndexedObject(foo)

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬрдм рддрдХ tslint --fix рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ type Foo рд╕реЗ interface Foo рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ:

Argument of type 'Foo' is not assignable to parameter of type 'IndexedObject'.
  Index signature is missing in type 'Foo'.

рдЖрдИрдПрдордУ, рдХреЛрдб рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдирд┐рдпрдо рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд┐рд▓реНрд▓реА, рдпрд╣ рдПрдХ рдирд┐рдпрдо рднреА рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдб рддреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред

рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдпрд╣ "рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ 'I' рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдирд┐рдпрдо рдХрд╛ рднреА рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

error TS2344: ...
Index Signature is missing in type 'SOME INTERFACE'.

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЯрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдХреЗ рдРрдкреНрд╕ рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ type рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ SOLID рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрдХреЗрддрдХ рд╣реИред

Type: Breaking Change рд▓реЗрдмрд▓ рдкреНрд░рддрд┐ #4811 рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЕрдм рдкреАрдЖрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ!

рддреЛ рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрдпреЛрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЗрд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ?! рдореИрдВ

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

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

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

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

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

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

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