рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ ts рддреНрд░реБрдЯрд┐ рдХреЗ рдКрдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐
/// TS_IGNORE
let a:string = 1
рдФрд░ рдХреНрдпрд╛ рд╕рдВрдХрд▓рдХ рдиреЗ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХреА рд╣реИ ...
рдРрд╕реЗ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдбреЗрд╡рд▓рдкрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рд╢рд╛рдВрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреА: рдХреЛрдИ рднреА
рд╕рд╛рджрд░
рд╢реЙрди
рдорд╛рдирд╛ред рдЬрд╛рд╡рд╛ рдХреЗ @SuppressWarnings
рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рд▓рд╛рд▓рд╕рд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП:
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд:
const typeMetadataKey = Symbol('type'); function type(name: string): PropertyDescriptor { return Reflect.metadata(typeMetadataKey, name); }
рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:
Unable to resolve signature of class decorator when called as an expression.
редрдЬрдм рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
class Person { @type('string') firstName: string; }
рдбреЗрдХреЛрд░реЗрдЯрд░ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдКрдкрд░ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдЗрд╕рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА рдпрджрд┐ рдХреЛрдИ рд╕рд╣реА рджрд┐рд╢рд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ред
рдмрд╕ рдЗрд╕реЗ рдХрд╛рд╕реНрдЯ рдХрд░реЗрдВ (рдХрд╛рд╕реНрдЯ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ)
const foo: string = 7 as any;
рдХреНрдпрд╛ рдЖрдк рдпрд╣реА рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ?
рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ (рдореБрдЭреЗ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдкрддрд╛ рд╣реИ), рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдиреНрдп рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐
рд╕реБрдкрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдФрд░ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд╛рдж рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ...
рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ
рддреЛ // tslint:disable
рдЬреИрд╕рд╛ рдХреБрдЫ?
рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЛ tsc
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреЗрдХреЛрдВ рдХреЛ рдЪрд╛рд▓реВ/рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗрддрд╛ рд╣реИ?
_eg:_ const FooBar: string = 'rozzzly'; // tslint:disable-line camelcase
рд╡рд╣ рддреЛ рдЬрдмрд░реНрджрд╕реНрдд рд╣реЛрдЧрд╛...
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ tsc
рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рд▓рд┐рдВрдЯрд░ рдХреЗ рд▓рд┐рдП рд╣реИред
"рдЗрд╕реЗ рдмрдВрдж рдХрд░реЗрдВ" рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП :)
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ" рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ/рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ рд╕рдЬрд╛рд╡рдЯреА, рдЬрд╣рд╛рдВ рдПрдкреАрдЖрдИ рдереЛрдбрд╝рд╛ рдЕрд╕реНрдерд┐рд░ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣рдореЗрд╢рд╛ рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ (рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ) рд╕рдВрд╕реНрдХрд░рдг рдХреЗрд╡рд▓ tsconfig "рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕" рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рджрдмрд╛ рджреЗрддрд╛ рд╣реИред
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╢реИрддрд╛рди рдХреЗ рд╡рдХреАрд▓ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИред рдФрд░ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рд╣рд░ рдХреЛрдИ рдПрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ - рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрдиреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рдмрдЧ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрдЬрд╛рдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗред
рдЖрдЦрд┐рд░рдХрд╛рд░, рдореИрдВ рдЕрднреА рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░рд╛ рд╕рд┐рдВрдЯреЗрд╕реНрдЯрд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рд╕рд╛рдл рд╣реЛред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛рдирд╛ред рдмреЗрд╢рдХ, рдпрд╣ _after_ рд╣реЛрдЧрд╛ рдореИрдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реВрдВ рдФрд░ рдФрд░ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред ;)
"рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛" рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЖрдкрдХреЛ "рдЗрд╕рд╕реЗ" рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИред рддреЛ let a:string = 1
a number
рдпрд╛ рдПрдХ string
?, рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ a
рдХреА рдПрдХ рдФрд░ рдШреЛрд╖рдгрд╛ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рд▓рдп рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ? рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬреИрд╕реЗ return {a} ;
, рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ { a : number }
рдпрд╛ { a: string }
, рдпрд╛ рджреЛрдиреЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдореМрд▓рд┐рдХ рдмрд╛рдд, рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╕рднреА рдЕрдирджреЗрдЦреА рд╣реИрдВред рддреНрд░реБрдЯрд┐рдпрд╛рдВ рди рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдкреАрдврд╝реА рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреА рд╣реИрдВ, рди рд╣реА рдЯреВрд▓рд┐рдВрдЧ рдХреЛред
рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрдВрддреНрд░ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП any
, рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╛рд╡реЗ (рдХрд╛рд╕реНрдЯ), рдФрд░ рдкрд░рд┐рд╡реЗрд╢ рдШреЛрд╖рдгрд╛ред
рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ "рдЕрдорд╛рдиреНрдп" рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ declare module "blah" { export = any }
ред рдпрд╛ declare var $: any
рдФрд░ рдЖрдк рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛рдиреЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЕрд╕рд▓реА рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИред рджрдорди рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕реЗ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдЕрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рднрд╛рд╡ рд╣реИрдВред рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ? рдпрд╣ рдХреМрди рд╕рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ? рдФрд░ рдХреНрдпреЛрдВ рд╕рдВрдХрд▓рдХ рдЖрдкрдХреЛ рдПрдХ рдЕрдиреБрдкрдпреЛрдЧреА рддреНрд░реБрдЯрд┐ рджреЗ рд░рд╣рд╛ рд╣реИ ...
рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред
рд╣рдордиреЗ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TS 2.0 рдореЗрдВ рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП;
declare module "@angular\*";
--skipLibCheck
рдЯрд╛рдЗрдк рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА .d.ts
рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ--typeRoots
рд▓рд┐рдП рд╕рдорд░реНрдерди рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рд╕реЗ рдШреЛрд╖рдгрд╛ рдлрд╛рдЗрд▓реЗрдВ рд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВрдмрд╕ рдХрд┐рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕ рддрд░рд╣ "рдЗрд╕реЗ рдмрдВрдж рдХрд░реЛ", рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЧреНрдпрддрд╛ (рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдХрдореА) рдПрдХ рдЕрд▓рдЧ рд╕рд╡рд╛рд▓ рд╣реИ
let x: PieInTheSky = <any> 'cake is a lie';
рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рдореБрджреНрджрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдирд╣реАрдВ рд╣реИ
<any>
рдЖрдкрдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рднреА рдХрд╖реНрдЯрдкреНрд░рдж рдЪреАрдЬреЛрдВ рд╕реЗ 100% рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рд╕рд╛рде рд╡реЗрдирд┐рд▓рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдФрд░ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рд╕реБрдкрд░ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рдлрд┐рд╕рд░реНрдЯ рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд╢рд╛рдВрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЗрд╕реЗ рдПрдХ рдПрдВрдЯреАрдкреИрдЯрд░реНрди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпреЛрдВ рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
_ ClassA.ts
_
class A {
constructor() {
this.init();
}
protected init() {
// does nothing by itself
}
}
_ ClassB.ts
_
class B extends A {
constructor() {
super();
console.log('rest of code from B\'s constructor');
}
protected init() {
console.log('this runs before the rest of code from B\'s constructor');
}
}
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрддрдирд╛ рднрдпрд╛рдирдХ рдмрдирд╛рддрд╛ рд╣реИ, _рдФрд░ рдХрд╖реНрдЯрдкреНрд░рдж_ рднреАред рдпрд╣ рдЖрдкрдХреЛ рдмреЗрд╣рддрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдмреЗрд╣рддрд░ рдбреЗрд╡рд▓рдкрд░ рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдордЬреЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ ; рдЖрдк рдЗрд╕реЗ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреА "рджреАрдХреНрд╖рд╛" рдпрд╛ рд╢рд╛рдпрдж, "рдЖрдЧ рд╕реЗ рдкрд░реАрдХреНрд╖рдг" рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВред : рд╣рдБрд╕рдирд╛: рд▓реЗрдХрд┐рди рдЖрдк рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рд╕реБрдкрд░ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рдлрд┐рд╕рд░реНрдЯ рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд╢рд╛рдВрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ ES6 рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рдмрдирд╛рдПрдВ... рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп ЁЯСг :gun: рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╣рдЯрд╛рдирд╛ рд╣реИред
рдпрджрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рд╕рд╣реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ "рдХрд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕" рдмрдирд╛рдо рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд▓рд┐рдВрдЯрд░ рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрднреА рддрдХ "рддреНрд░реБрдЯрд┐" рдмрдирд╛рдо "рдЪреЗрддрд╛рд╡рдиреА" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИред рдЬрдм рд╡реЗ рдЖрддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рджрдордирдХрд╛рд░реА рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рд╡рд╛рдкрд╕реА рдХреЗ рдмрд╛рдж рдХреЛрдб рдФрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреЗрд╡рдХреВрдл)ред
рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдБ рдореБрдЭреЗ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдкрд╕рдВрдж рдЖрдПрдЧреА:
interface Animal {
numberOfLegs: number;
// a gazillion more properties
}
class Dog implements Animal {
breed: string;
constructor(animal: Animal, breed: string) {
Object.assign(this, animal);
this.breed = breed;
}
}
рдЕрднреА ts рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ:
[ts] рдХреНрд▓рд╛рд╕ 'рдбреЙрдЧ' рдиреЗ 'рдПрдирд┐рдорд▓' рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛
рд╕рдВрдкрддреНрддрд┐ 'рдирдВрдмрд░рдСрдлрд▓реЗрдЧреНрд╕' рдЯрд╛рдЗрдк 'рдбреЙрдЧ' рдореЗрдВ рдЧрд╛рдпрдм рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдХрд▓рдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╕рднреА рдЧреБрдгреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ (рдФрд░ рдореБрдЭреЗ рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
@DethAriel рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдк рдЬреЛ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрдВрдбреАрд╢рди рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рдХреЛрдб рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
@aluanhaddad рд╣рд╛рдБ, рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ
рдмрд╕ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕+рдХреНрд▓рд╛рд╕ рдХреЙрдореНрдмреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
interface Animal {
numberOfLegs: number;
// a gazillion more properties
}
interface Dog extends Animal {
}
class Dog {
breed: string;
constructor(animal: Animal, breed: string) {
Object.assign(this, animal);
this.breed = breed;
}
}
Thx, @mhegazy , рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рддреНрд░реБрдЯрд┐ <any>
рдПрдб рджреВрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ?
рдореИрдВ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдмрд╛рдЗрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ https://github.com/Microsoft/TypeScript/issues/3508 рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЕрдиреНрдпрдерд╛ рдкреНрд░рддреНрдпреЗрдХ ::
рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ TS1128: Declaration or statement expected
)
рдореИрдВ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдмрд╛рдЗрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░рдиреЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИред рдкрд╛рд░реНрд╕рд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рдкреЗрдбрд╝ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╣реИ, рдЗрд╕ рдмрд┐рдВрджреБ рд╕реЗ рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреА, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ, рдХреЛрдИ рд╕рдВрдЧрддрддрд╛ рдЬрд╛рдВрдЪ рдирд╣реАрдВ, рдХреЛрдИ рд╕реНрд╡рд░реВрдкрдг рдирд╣реАрдВ, рдХреЛрдИ рдкреВрд░реНрдгрддрд╛ рдирд╣реАрдВ, рдХреБрдЫ рднреА рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░реЗрдВ, рдпрд╛ рдХреЗрд╡рд▓ .js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВред
рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЬреЗрдПрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЬрдм рдореИрдВ gulp build
рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рд▓рдЧрднрдЧ 2000 рдЯреАрдПрд╕ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдпрд╛ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдкрд░рд┐рднрд╛рд╖рд┐рддред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд░рд╣реА рд╣реИрдВред
рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рднреА рд╣реИ, рдореИрдВ рдкреНрд░реА-рдИрдПрд╕ 6 рдореЙрдбреНрдпреВрд▓-рдП-рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рдРрдк рдХреЛ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ рдРрдк рд╣реИред
рдореИрдВ рдЗрд╕рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдРрдк * рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЙрдк-рддрддреНрд╡реЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЬреЛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ рд╡рд╣ "рдиреЗрдорд╕реНрдкреЗрд╕ 'рдРрдк' рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддрд╛" рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдПрдХ рджреНрд░рд╡реНрдпрдорд╛рди рд╣реИред
рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рднреА рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдПрдХ GlobalProxy.ts рдкрд░ рдкреБрди: рд╕рдХреНрд░рд┐рдп рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ //TS-NO-WARNINGS рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рд╕реНрдкрд╖реНрдЯ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ ...
TS рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЗ рдЖрдкрдХреЛ рдЬреЛ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреА рд╢реБрджреНрдзрддрд╛ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
@ zeeshanjan82 рдХреНрдпреЛрдВ рди --allowJs
рдФрд░ рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд╛рдЗрд▓ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВ? рдЙрд╕ рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЯрд╛рдЗрдк рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреАред рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдкрд░рд┐рд╡реЗрд╢ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдШреЛрд╖рдгрд╛ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ
_globals.d.ts_
declare module '*';
рддреНрд░реБрдЯрд┐ рджрдорди рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред
рдкрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХ isoWeek
рдХреЛ startOf
рдФрд░ endOf
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдПрдирдо рдореЗрдВ рд╡реИрдз рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЧрдПред рдЗрд╕реЗ рдмрд╛рдж рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрди рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рд╣рдорд╛рд░реЗ рдЕрдВрдд рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреБрди: рдХрд╛рдо рд╣реЛрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдкрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ TS рдлреЗрдВрдХрдиреЗ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг isoWeek
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рддреЛ рдЗрд╕ рд╕рдордп рдПрдХ рдЪрдЯреНрдЯрд╛рди рдФрд░ рдПрдХ рдХрдард┐рди рдЬрдЧрд╣ рдХреЗ рдмреАрдЪ рдлрдВрд╕ рдЧрдпрд╛ред
рдЖрдк рдмрд╕ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдХрд╣реЛ:
// ./overrides/moment.d.ts
declare module "moment";
// tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"baseUrl": ".",
"paths": {
"moment": ["overrides/moment.d.ts"] // override definition for moment
}
}
}
рдЕрдм рд╕рдВрдХрд▓рдХ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреА рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐ override/moment.d.ts
рд╡рд┐рд░реБрджреНрдз рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдкрд▓ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ рдХреА рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬреЛрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕реЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдЗрдЪреНрдЫрд╛ рджреЛрдиреЛрдВ рдХреА рдХрдореА рд╣реИ;)
рдореЗрд░реЗ рдкрд╛рд╕ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдЗрдЪреНрдЫрд╛ рджреЛрдиреЛрдВ рдХреА рдХрдореА рд╣реИ;)
рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд╣реИред рдмрд╕ declare module "moment";
рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП declare var $: any
рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдФрд░ рд╕рдВрдХрд▓рдХ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
@mhegazy рдХрд╛ рд╕реБрдЭрд╛рд╡ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ 20 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рд╡реИрд╕реЗ, рдХреНрд╖рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╡реЗ рдХреБрдЫ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рднреВрд▓ рдЧрдП рдЬрд┐рдирдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╡реЗ рдореЗрд░реЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЦреБрд▓реЗ рдереЗред
declare module "moment";
рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рдХреНрд╖рдг-рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП any
s рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдХреЛрдб рдореЗрдВ рдмреНрд▓реАрдб рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдИ рд╕реНрдЯреИрдЯрд┐рдХ рдЪреЗрдХ рднреА рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдПрдХрд▓ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдПрдирдо рдореВрд▓реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рдПрдХ рднрд╛рд░реА рдХреАрдордд рд╣реИред
@aluanhaddad рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЦреБрд▓рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рджреВрд╕рд░реЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрдВрдж рд╣реЛ рдЧрдпрд╛, рдЬрд┐рд╕рдиреЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдкреЗрд╢ рдХрд┐рдП (рдФрд░ рдЕрднреА рднреА isoWeek
рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛), рдЗрд╕рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реБрдЖ .
рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдВрдЧреБрд▓рд░ 2 рдЖрджрд┐ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рдпреЗ рдореБрджреНрджреЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреА рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдиреЛрдб рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдиреЗрдЯ, рдиреЛрдб 6.9 рдПрд▓рдЯреАрдПрд╕) рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ:
server = net.createServer({ pauseOnConnect: true }, function(connection) { ... })
// [ts] severity: 'Error'
message: 'Argument of type '{ pauseOnConnect: boolean; }' is not assignable to parameter of type '{ allowHalfOpen?: boolean; }'.
Object literal may only specify known properties, and 'pauseOnConnect' does not exist in type '{ allowHalfOpen?: boolean; }'.'
рдФрд░ ioredis рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рднреА:
var redis = new Redis(CONFIG.redis);
// [ts] severity: 'Error'
message: 'Only a void function can be called with the 'new' keyword.'
рдЬреИрд╕рд╛ рдХрд┐ @yortus рдФрд░ @adamreisnz рдиреЗ рдмрддрд╛рдпрд╛, рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдкрдХреЛ declare module "x";
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ TS рд▓рд╛рднреЛрдВ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рдирд╛ рд╣реИ рддреЛ рдЖрдк TS рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдХреНрдпреЛрдВ рдХрд░реЗрдВрдЧреЗ?
рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рднреА рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЧрд╛рдпрдм рд╣реИрдВ рддрд╛рдХрд┐ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рди рдЦреЛрдПрдВред
рдЦреИрд░, рдЬрдм рдореИрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ:
if (typeof Symbol === "function" && Symbol.match) {
// ...
}
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдореЗрд╢рд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ Cannot find name 'Symbol'
рдЕрдЧрд░ target
рд╣реИ es5
, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдЙрдореНрдореАрдж рдХреА рдереАред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдг рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдЦреНрдд рдЬрд░реВрд░рдд рд╣реИред
declare var Symbol: any;
@ gdh1995 @mhegazy рдпрд╛ рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрдзрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ lib
рдзреНрд╡рдЬ рдХреЛ es2015
ред
@mhegazy рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
declare var Symbol: {
(description?: anyNotSymbol): symbol;
readonly match: symbol;
};
@DanielRosenwasser рд╣рд╛рд▓рд╛рдВрдХрд┐ es2015
рдЗрди рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ es5
рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреЗ рддрдХ рд╕реАрдорд┐рдд рд╣реИ рдФрд░ рдлрд┐рд░ Symbol
рдХреЛ рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдм рдЬреЛ рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдореБрдЭреЗ рддрдм рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджреЗрддрд╛ рд╣реИ рдЬрдм рдореИрдВрдиреЗ typeof Symbol === "function"
рд▓рд┐рдЦрд╛ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдИ рд╕рд▓рд╛рд╣?
рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдорд▓рд╛ рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рдЖрдПрдЧрд╛, рд╡рд╣ рд╣реИ:
// Test.ts
// Component to test
import {ComponentToTest} from './ComponentToTest';
// Dependency of ComponentToTest to mock
import {Dependency} from './Dependency';
// Mock to replace it with
import {MockedDependency} from './MockedDependency';
Dependency = MockedDependency;
рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХреЗ рднреАрддрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдП рдЬрд╛рдиреЗ рдХрд╛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕реНрдкрд╖реНрдЯ "'рдирд┐рд░реНрднрд░рддрд╛' рдХреЛ рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЪрд░ рдирд╣реАрдВ рд╣реИред" рддреНрд░реБрдЯрд┐ред
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╣ рд╣реЛрдЧреА рдХрд┐ рдореИрдВ рдЧрд▓рдд рдкреЗрдбрд╝ рдХреЛ рднреМрдВрдХ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ inject-loader
рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ рд╡реЗ рд╕рдорд╛рдзрд╛рди рдП) рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд░реНрдж рд╣реИрдВ/рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рдХрд╛рдо рдФрд░ рдмреА) рдЙрдкрд░реЛрдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдУрдкреА рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдбреЗрд╡рд▓рдкрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЬрд╛рдирддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реИрдХреА рд╕рдорд╛рдзрд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЯреАрдПрд╕ рдХреЛ рдЪреБрдк рд░рд╣рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХреЗ рднреАрддрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдП рдЬрд╛рдиреЗ рдХрд╛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕реНрдкрд╖реНрдЯ "'рдирд┐рд░реНрднрд░рддрд╛' рдХреЛ рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЪрд░ рдирд╣реАрдВ рд╣реИред" рддреНрд░реБрдЯрд┐ред
рдпрд╣ ES6 рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред рдЗрд╕рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рд╕рдордп рдЬрдм рдЗрдВрдЬрди рдореВрд▓ рд░реВрдк рд╕реЗ ES6 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рдЕрдкрдирд╛ ComponentToTest
Dependency
рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реБрдХ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Dependency
рдХреЗ рдореВрд▓реНрдп рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ComponentToTest
ред
рдпрд╣ ES6 рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред рдЗрд╕рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рд╕рдордп рдЬрдм рдЗрдВрдЬрди рдореВрд▓ рд░реВрдк рд╕реЗ ES6 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдЖрд╣ рдХрд╛рдлреА рдареАрдХ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╣реИред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рдЕрдкрдиреЗ ComponentToTest рдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдЬрд╛рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ред рдЗрд╕реЗ рдЯреЗрд╕реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рд▓рдВрдЧрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЯреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, @mhegazy
рдореИрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдЪреЗрдХ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ:
function isValidId(s: string): boolean {}
рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд┐рд╕реА рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ false
рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдЫ рдРрд╕рд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред
рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдлрд╝рдВрдХреНрд╢рди рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЧрд▓рдд рдкреНрд░рд╛рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪрд╛рд╣реВрдВрдЧрд╛
@rpadovani рдмрд╕ any
:
expect(isValidId(78 as any)).toBe(false);
рдореИрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рднреА рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ foo(bar: any, baz: any) рдХреЛ рдврд╛рдВрдЪреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди foo рдХреЗ рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдмрд╛рд░ рдЕрдкреНрд░рдпреБрдХреНрдд рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐ рдЬрд╛рдБрдЪ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ foo рдХреЗ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ, рдмрд╛рд░ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
@benjaminabbitt рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ foo (_bar: any, baz: any)
рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: "_"
рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреЛрдбрд╝реЗрдВ: рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб/рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдпрд╣рд╛рдВ рдХреБрдЫ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд░рд╣рддреЗ рд╣реИрдВ рдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рдЗрди-рдХреЛрдб рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛ рдЙрдирдХреЗ рдХреЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ)ред рдпрд╣ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рддреНрдордХ рддреНрд░реБрдЯрд┐ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ, рдпрд╛ рдпрд╣ рд╕рдордЭреЗ рдмрд┐рдирд╛ рдХрд┐ рд▓реЛрдЧ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдХрд┐рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред
рддреГрддреАрдп рдкрдХреНрд╖ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдЙрдкрдпреБрдХреНрдд рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬрд┐рд╕реЗ рдПрдирдкреАрдПрдо рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореГрдд рдХреЛрдб рд╣реЛрдВрдЧреЗ (рдкреЗрдбрд╝ рд╣рд┐рд▓рдирд╛ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ)ред
рдЖрдЗрдП рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдПрдирдкреАрдПрдо рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдФрд░ рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ?
рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдореИрдВрдиреЗ рд╡рд╣ рдХреЛрдб рдирд┐рдХрд╛рд▓рд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдм рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рдкрд░ /* ts:disable */
рдЯрд┐рдкреНрдкрдгреА рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рднреАрддрд░ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдм рдХреЛрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╛рдЗрд▓ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдФрд░ рднрд▓реЗ рд╣реА рдЙрд╕рдиреЗ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕рд▓рд╛рд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддреГрддреАрдп рдкрдХреНрд╖ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВ?
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕рд▓рд╛рд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддреГрддреАрдп рдкрдХреНрд╖ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВ?
рдЙрдиреНрд╣реЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рди рдХрд░реЗрдВред .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝ рджреЗрдВ рдЬреИрд╕реЗ рд╡реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ .d.ts рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ .d.ts рдлрд╛рдЗрд▓реЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣реИрдВред
.d.ts рдлрд╝рд╛рдЗрд▓ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬрд╝реЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддреА рд╣реИ:
declare var $: any;
рдлрд┐рд░ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдЬреИрд╕рд╛ рдЖрдк рдлрд┐рдЯ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХреА рдЬрд╝рд░реВрд░рддреЗрдВ рдмрдврд╝рддреА рд╣реИрдВред
рдЕрдЧрд░ рдореИрдВ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рддреЛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдХреНрдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ?
рдЕрдЧрд░ рдореИрдВ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рддреЛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдХреНрдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ?
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд╡рд╛рд▓ рд╕рдордЭрддрд╛ рд╣реВрдВред рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдк рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирддреЗ рд╣реИрдВред рдлрд┐рд░ рд╕реЗ рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╣реИ, рдмрд╛рд╣рд░реА рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдЖрдк рдмрджрд▓рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕реЗ TS рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВред рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ .d.ts рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдХрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╕рд░рд▓ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ, any
рдХреЗ рд╕рд╛рде рдлрд┐рд░ рдЬреИрд╕реЗ рд╣реА рдЖрдк рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛрдбрд╝реЗрдВред
рдореБрдЭреЗ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдХрд┐ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ рдЧрд┐рдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛрдб рдХреЛ рдЯреАрдПрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╣реИред рд╡реИрд╕реЗ рднреА, рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдорд╛рд░реНрдЧ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЙрди рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд╛рдзреНрдп рдХрд░реВрдВрдЧрд╛ред
рдЖрдкрдХреЛ .js рдлрд╝рд╛рдЗрд▓реЗрдВ рдХрдорд┐рдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╣рддреЗ рд╣реИрдВред рдЖрдо рддреМрд░ рдкрд░ рдЖрдк рдЕрдкрдиреЗ рд░реЗрдкреЛ рдореЗрдВ react-0.12.0.js
рдХрдорд┐рдЯ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рд╕реАрдбреАрдПрди рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред рдорд╛рди рд▓реЗрдВ рдХрд┐ @types/react
рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдирдИ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ рдЗрд╕реЗ declarations.d.ts
рдФрд░ рдЬреЛрдбрд╝реЗрдВ:
declare module "react"; // just saying the module is of type any
рдпрд╣ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдирд╛рдордХ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдХрд┐рд╕реА рднреА .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рддреЛ рдЕрдЧрд░ рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдЬреЛ рдПрдирдкреАрдПрдо/рд╕реАрдбреАрдПрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ) рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреЛрдб рдмреЗрд╕ рдкрд░ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ 2 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рд╡рд┐рдХрд▓реНрдк 1 : рдореВрд▓ рдХреЛрдб рдХреЛ .js
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП .d.ts
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдП рд░рдЦреЗрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ @ jmlopez-rod рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЕрдкрдиреЗ рд░реЗрдкреЛ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЙрд╕рдиреЗ рдХрд┐рдпрд╛, рддреЛ рдЙрд╕рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдЙрд╕рдХреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛ рджреЗрдЧрд╛ред
рд╡рд┐рдХрд▓реНрдк 2 : рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯреЗрдВред
рдпрд╣ "рдЬрдЯрд┐рд▓ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣ рдХреЛрдб рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░реЗрдЧрд╛ ... рд▓реЗрдХрд┐рди рдЕрдм рд╣рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реА рд╣реИрдВ, рдФрд░ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдзрд╛рдЧреЗ рдореЗрдВ рдореВрд▓ рдЪрд░реНрдЪрд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ @ jmlopez-rod рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЕрдкрдиреЗ рд░реЗрдкреЛ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЙрд╕рдиреЗ рдХрд┐рдпрд╛, рддреЛ рдЙрд╕рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдЙрд╕рдХреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛ рджреЗрдЧрд╛ред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ "library.js"
рдФрд░ "website.js"
, рдЖрдк "website.js" рдХреЛ "website.ts" рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рдмрд╕ tsc website.ts --outFile website.js
рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЕрдм рд╣рдо рд╡рд╛рдкрд╕ рд╡рд╣реАрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдм рджреЛ .js рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖред рдЗрд╕рд▓рд┐рдП рдпрд╣ рди рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреНрдпреЛрдВ рд╣реИ.. рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрдорд╛рдг рдХрджрдо рд╣реИред
рдпрд╣ "рдЬрдЯрд┐рд▓ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣ рдХреЛрдб рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░реЗрдЧрд╛ ... рд▓реЗрдХрд┐рди рдЕрдм рд╣рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реА рд╣реИрдВ, рдФрд░ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдзрд╛рдЧреЗ рдореЗрдВ рдореВрд▓ рдЪрд░реНрдЪрд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ?
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ ts рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдХреНрдпреЛрдВ рд▓рд┐рдпрд╛, рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЕрдкрдиреЗ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдореЗрдВ рдкреНрд░рд╡рд╛рд╣рд┐рдд рдХрд░рдиреЗ рджреЗрдВ, рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрдирд╛рдПрдВ, рдлрд┐рд░ рднреА рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдорд╛рдирдХ рдкрд░ рд░рдЦреЗрдВред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ @RyanCavanaugh рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ , рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рд╕рднреА рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рдХ рдХреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЛ рдирд╣рд╛рдиреЗ рдХреЗ рдкрд╛рдиреА рдХреЗ рд╕рд╛рде рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рддрд░реАрдХреЗ рд╣реИрдВред
рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡реЗрд╢ рдШреЛрд╖рдгрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИред
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ tsconfig.json рдХреЗ рд▓рд┐рдП рдкрде рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ
"paths": {
"js-xlsx": ["./xlsx.d.ts"]
}
рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрддрд╛ рд╣реВрдВ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реАред
рдореИрдВрдиреЗ 'fs', 'fs-extra' рдФрд░ 'js-xlsx' рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЙрди рд╕рднреА рдиреЗ рдореЗрд░реЗ рдкрд░рд┐рд╡реЗрд╢ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ, рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдпрд╛ рдпрд╣рд╛рдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдпрд╛ declare var $: any;
@mhegazy
рдЖрдкрдХреЛ .js рдлрд╝рд╛рдЗрд▓реЗрдВ рдХрдорд┐рдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╣рддреЗ рд╣реИрдВред рдЖрдо рддреМрд░ рдкрд░ рдЖрдк рдЕрдкрдиреЗ рд░реЗрдкреЛ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-0.12.0.js рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рд╕реАрдбреАрдПрди рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред рдорд╛рди рд▓реЗрдВ рдХрд┐ @ рдкреНрд░рдХрд╛рд░/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдирдИ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕реЗ рдШреЛрд╖рдгрд╛рдПрдБ.d.ts рдХрд╣реЗрдВ рдФрд░ рдЬреЛрдбрд╝реЗрдВ:
рдореЙрдбреНрдпреВрд▓ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ; // рд╕рд┐рд░реНрдл рдпрд╣ рдХрд╣рдирд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ
рдпрд╣ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдирд╛рдордХ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдХрд┐рд╕реА рднреА .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╡реИрд╕реЗ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдлрдПрд╕-рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ рдЬреИрд╕реЗ @ рдкреНрд░рдХрд╛рд░/рдПрдлрдПрд╕-рдЕрддрд┐рд░рд┐рдХреНрдд рдФрд░ рдЬреЗрдПрд╕-рдПрдХреНрд╕рдПрд▓рдПрд╕рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреАрдПрд╕-рдПрдХреНрд╕рдПрд▓рдПрд╕рдПрдХреНрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдпрд╣ рдЪрд╛рд▓ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ :(
рд╡реИрд╕реЗ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдлрдПрд╕-рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ рдЬреИрд╕реЗ @ рдкреНрд░рдХрд╛рд░/рдПрдлрдПрд╕-рдЕрддрд┐рд░рд┐рдХреНрдд рдФрд░ рдЬреЗрдПрд╕-рдПрдХреНрд╕рдПрд▓рдПрд╕рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреАрдПрд╕-рдПрдХреНрд╕рдПрд▓рдПрд╕рдПрдХреНрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдпрд╣ рдЪрд╛рд▓ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ :(
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
c:\test\9448>npm install @types/fs-extra
[email protected] c:\test\9448
`-- @types/[email protected]
`-- @types/[email protected]
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
c:\test\9448>type a.ts
import { rmdir } from "fs-extra";
rmdir("c:/test");
c:\test\9448>type tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es5"
}
}
c:\test\9448>tsc --v
Version 2.2.0
c:\test\9448>tsc
c:\test\9448>echo %ERRORLEVEL%
0
рд╣рд╛рдБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдЬреЛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рджрд┐рдП рдЧрдП рддрд░реАрдХреЛрдВ рд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджрдмрд╛ рд╕рдХрд╛ред рд╡реИрд╕реЗ рдореЗрд░реЗ рдкрд╛рд╕ https://github.com/AngularClass/angular2-webpack-starter рд╣реИ , рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░
рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдореБрдЭреЗ рдЧрд▓рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ,
error TS1005: '{' expected.
рдЗрд╕ рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ JSX:
<motor-node ref = 'menu'
absoluteSize = `0, ${this.MENU_BAR_HEIGHT}, 0`
>
{menu}
</motor-node>,
рдпрд╣ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ {
ред рдпрд╣ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рддрдм рддрдХ, рдореИрдВ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
@trusktr , рдпрд╣ рддреНрд░реБрдЯрд┐ рдПрдХ рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐ рд╣реИред рдЗрд╕реЗ рджрдмрд╛рдиреЗ рд╕реЗ рдпрд╣ рддрдереНрдп рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдЗрд╕ рдмрд┐рдВрджреБ рд╕реЗ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИ, рдФрд░ рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдЕрдиреБрдорд╛рди рдХреЗ рдкреНрд░рдХрд╛рд░, рд╕рд╛рде рд╣реА рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдЕрдиреНрдп рдореЗрдВ рдЙрддреНрдкрдиреНрди рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВред
рдиреЗ рдХрд╣рд╛ рдХрд┐ред JSX рдпреБрдХреНрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░:
JSXAttributeValue:
"JSXDoubleStringCharactersopt"
' JSXSingleStringCharactersopt '
{рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди}
рдЬреЗрдПрд╕рдПрдХреНрд╕рдПрд▓рд┐рдореЗрдВрдЯ
рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рд╣реА рд╣реИ рдФрд░ рдПрдХ JSX рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп absolteSize = {...}
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдпрд╣ рддреНрд░реБрдЯрд┐ рдПрдХ рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐ рд╣реИ
рд╣рд╛рдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдЙрдЯрдкреБрдЯ absoluteSize: "0, " + this.MENU_BAR_HEIGHT + ", 0"
, рдЬреЛ рдореБрдЭреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреАрдЬреЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╣реИред
рдУрд╣ред рдорд╛рдл рдХрд░реЛ рдлрд┐рд░ред рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдИред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдЦрд╛рдореЛрд╢ рд╣реЛ рдЬрд╛рдПред
рдореИрдВрдиреЗ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдореБрдЭреЗ рдХреЗрд╡рд▓ {}
рдЬреЛрдбрд╝рдХрд░ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЬреАрдирд╛ рдЪрд╛рд╣рд┐рдПред
TS 2.1 (VS2017 RC) рдореЗрдВ рд╣рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА JS рдлрд╛рдЗрд▓реЛрдВ (/рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмреИрдареЗ) рдлрд╝реЛрд▓реНрдбрд░-рдЬреИрд╕реЗ TS7027 рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЪреЗрддрд╛рд╡рдиреА/рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рджрдорди рдлрд╝рд╛рдЗрд▓ (рд╕реА # GlobalSupressions.cs рдХреЗ рд╕рдорд╛рди) рдореЗрдВ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
TS 2.1 (VS2017 RC) рдореЗрдВ рд╣рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА JS рдлрд╛рдЗрд▓реЛрдВ (/рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмреИрдареЗ) рдлрд╝реЛрд▓реНрдбрд░-рдЬреИрд╕реЗ TS7027 рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред
рдЕрдЧрдореНрдп рдХреЛрдб (TS 7027) рдХреЗ рд▓рд┐рдП, --allowUnreachableCode
рд╕реЗрдЯ рдХрд░реЗрдВ рдпрд╛ рдЗрд╕реЗ рдЕрдкрдиреЗ tsconfig.json
рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ "рдореЗрд░реЗ рдХреЛрдб" рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ!
--alowJs
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдЖрдкрдХрд╛ рдХреЛрдб рдмрди рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрдХрд▓рдХ рдЗрд╕реЗ рдЪреВрд╕ рд▓реЗрдЧрд╛, рдЗрд╕реЗ рд╕реБрдЭрд╛рдП рдЧрдП рд▓рдХреНрд╖реНрдп рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдЧрд╛, рдпрджрд┐ рдЖрдк --outFile
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ .. рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИред рдпрджрд┐ рдпрд╣ "рд▓рд╛рдЗрдмреНрд░реЗрд░реА" рдХреЛрдб рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ .d.ts рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдордиреЗ --allowJs - VS2015 рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИ, рдареАрдХ рдЙрд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ jquery.js, React.js рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмреИрдареА рд╣реБрдИ рдирд╣реАрдВ рд╣реИрдВ (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ html рдкреГрд╖реНрда рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИрдВ)
let { value } = browser.waitForPromise(() => {
return browser.executeAsync(function (method, name, resolve) {
require(['patron.Locator/patron.Locator.Manager'], function (locator) {
resolve(result);
});
}, method, name);
});
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ред рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ /* ts-disable */
/* ts-enable */
(рдПрд╕реНрд▓рд┐рдВрдЯ-рд▓рд╛рдЗрдХ) рдЬреИрд╕реЗ рдирдП рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ред рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐" рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдкреВрд░рд╛ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рджреЗрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ?
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐" рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдкреВрд░рд╛ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рджреЗрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ?
рдореИрдВ рдЙрд╕ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рдЙрд╕ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдпрд╣ рдПрдХ .ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ ..
рднрд▓реЗ рд╣реА, рдЗрд╕ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ declare var browser: any;
рдФрд░ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди рджреЗрдЦреЗрдВред
рдпрджрд┐ рдпрд╣ рдПрдХ .ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ ..
рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХреЛрдб рдиреЗ IE6 рдФрд░ рдЕрдиреНрдп рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдмрд┐рдирд╛ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Node.js CommonJS рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ require
рдПрдХ рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреЛрд╕реНрдЯ- рдФрд░ рдкреВрд░реНрд╡-рд╕рдВрд╢реЛрдзрди рдХреЗ рдЙрд╕ рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдореЗрд░реЗ рдФрд░ рдореЗрд░реА рдЯреАрдо рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рднрд▓реЗ рд╣реА, рдЗрд╕ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ var рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдХреЛрдИ рднреА; рдФрд░ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди рджреЗрдЦреЗрдВред
рджрд░рдЕрд╕рд▓, рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред browser.execute
рд╡рд┐рдзрд┐ рдХреА рдЕрдкрдиреА рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рднреА рд╣реИред
рдЕрдм рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрджреНрджрд╛ рдХреНрдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ?
рдореЗрд░рд╛ рдХреЛрдб рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдиреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ред рджреВрд╕рд░реЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдХреЛрдб рд╕рдВрд╢реЛрдзрди рд╣реИрдВред
let { value } = browser.waitForPromise(() => { // node
return browser.executeAsync( // node
function (method, name, resolve) { // browser
require(['patron.Locator/patron.Locator.Manager'], function (locator) { // browser
resolve(result); // browser
}); // browser
}, method, name);
});
рдпрд╣рд╛рдБ browser.executeAsync
рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:
browser.executeAsync = (...args) => {
let script = args.shift();
RPC.Selenium('/session/:sessionId/execute', {
script: `return (${script}).apply(null, arguments)`,
args
});
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреНрдпрд╛ рд╣реИ?
рдорд╛рдирдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ:
TS2345: Argument of type 'string[]' is not assignable to parameter string
TS7006: Parameter 'error' implicitly has an 'any' type
TS7006: Parameter 'attach' implicitly has an 'any' type
TS7006: Parameter 'message' implicitly has an 'any' type
TS7006: Parameter 'model' implicitly has an 'any' type
рдФрд░ рдЗрд╕реА рддрд░рд╣...
require
рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред
declare function require(v: string[]): any;
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред
рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, executeAsync
рд╡рд┐рдзрд┐ рдореЗрдВ рддреГрддреАрдп-рдкрдХреНрд╖ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдРрд╕реЗ require
s рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рднрд┐рдиреНрдирддрд╛рдПрдВ рд╣реИрдВред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕реИрдХрдбрд╝реЛрдВ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд░реНрдп рд╣реИред
рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдЬрдм рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдореБрдЭреЗ рдХреБрдЫ рдХреЛрдб рдмрд╛рд╣рд░ рдХрд░рдиреЗ рджреЗрдВ :)
рдЖрдк рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ declare function require(v: string[]): any;
рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг:
// module a.ts
export var ...
declare function require(v: string[], callback: Function);
let { value } = browser.waitForPromise(() => {
return browser.executeAsync(
function (method, name, resolve) { // browser
require(['patron.Locator/patron.Locator.Manager'], function (locator) { // OK
resolve(result);
});
}, method, name);
});
рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЖрдк рдХреЗрд╡рд▓ any
рдкрд░ рднреА рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
let { value } = browser.waitForPromise(() => { // node
return browser.executeAsync( // node
function (method, name, resolve) { // browser
(<any>require)(['patron.Locator/patron.Locator.Manager'], function (locator) { // browser
resolve(result); // browser
}); // browser
}, method, name);
});
рдпрд╣ рд╕рдорд╛рди рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдЬреА (рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ) рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рджреЛ рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ:
abstract class IParent {
static fromConfig(config: ParentConfig): IParent {
// actual code is 20 lines long, not this simple
// this throws "Cannot create an instance of the abstract class 'Parent'"
return new this().applyConfiguration(config);
┬а }
abstract method1(): void;
...
}
export class FirstChild extends IParent {
specificMethodForFirstChild() {┬а... }
method1() { ... }
...
}
export class SecondChild extends IParent {
specificMethodForSecondChild();
method1() { ... }
...
}
рдЙрдкрдпреЛрдЧ:
let first = FirstChild.fromConfig({ ... });
let second = SecondChild.fromConfig({ ... });
// this runs successfully:
(first as FirstChild).specificMethodForFirstChild();
(second as SecondChild).specificMethodForSecondChild();
рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ fromConfig()
рдореБрдЭреЗ "рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ 'рдорд╛рддрд╛-рдкрд┐рддрд╛' рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди рдХреЛрдб
рд╕рдВрдХрд▓рдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рдЖрдзрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдкрд╛рд╕ рдЖрдзрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред new this()
рд╕реЗ рдпрд╣ рдзрд╛рд░рдгрд╛ рдмрдирддреА рд╣реИ рдХрд┐ рд╕рднреА рд╡реНрдпреБрддреНрдкрдиреНрди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛; рдФрд░ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╕рддреНрдпрд╛рдкрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╣реИ, рддреЛ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ new (<any>this)(x, y);
рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ рдореИрдВрдиреЗ рд╡рд╣ рдирд╣реАрдВ рджреЗрдЦрд╛ред рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЦрддрд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдзрдиреНрдпрд╡рд╛рджред
рдХреНрдпрд╛ Module ... was resolved to ..., but '--allowJs' is not set
рдХреЛ рд╢рд╛рдВрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдЯреАрдПрд╕рд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЪреБрдк рдХрд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
'рдореЙрдбреНрдпреВрд▓ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ "someModule";' рдЖрдкрдХреА .d.ts рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВред
рдпрд╛ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ @types рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдпрджрд┐ рдХреЛрдИ рдореМрдЬреВрдж рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдХрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛:
const Button = (
content: contentTypes,
action: React.EventHandler<React.MouseEvent<HTMLDivElement>>,
disabled: boolean
): JSX.Element => (
<div className={`Button disabled-${disabled}`} onTouchStart='' onClick={ !disabled ? action : undefined } >
{ content }
<div className='background'></div>
</div>
);
рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдСрди рдЯрдЪрд╕реНрдЯрд╛рд░реНрдЯ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рддреНрдп рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, onTouchStart=''
рдХреБрдЫ рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдореЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдкрд░реНрд╢ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЯреВрдЯреЗ рд╣реБрдП рд╕реАрдПрд╕рдПрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдпрд╛ рдХреБрдЫ JSX рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдЪрд╛рд╣реВрдВрдЧрд╛ред
onTouchStart={<any>''}
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
рдпрд╣ tsx рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рддрд╣рдд рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ
onTouchStart={'' as any}
, рдмрд▓реНрдХрд┐ (рднреВрд▓ рдЧрдП JSX рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрднрд┐рдХрдерди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)
@RyanCavanaugh рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╡реИрдз рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛? рдореИрдВ рдПрдХ рдиреЛрдб рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реИрдЧрд░ рдХреЛрдбрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрд╡реИрдЧрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрд╡реИрдЧрд░ рдЕрдиреБрдмрдВрдз рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рд╣рд╛рд▓рд╛рдВрдХрд┐ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреНрд▓реЙрдХ рд╣реИрдВ:
let contentTypeHeader: Dictionary<string>;
if (contentTypeHeader) {
fetchOptions.headers = contentTypeHeader;
}
рдпрджрд┐ strictNullChecks
рдЪрд╛рд▓реВ рд╣реИ рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд▓реИрдЧ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЬреЛ рдмреЗрдХрд╛рд░ рд╣реИред рдореИрдВ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ <tsc strictNullChecks=false />
рдЬреИрд╕рд╛ рдХреБрдЫ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣реВрдВрдЧрд╛ (
рдХреНрдпрд╛ рдпрд╣ рд╕рдЦреНрдд рдирд▓рдЪреЗрдХ-рдЕрдиреБрдкрд╛рд▓рди рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реИрдЧрд░ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛?
@mhegazy рдЬрд╝рд░реВрд░ - рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдб-рдЬрдирд░реЗрд╢рди рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ)ред рддреЛ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХреЗ рдорд╛рдирдХреЛрдВ рддрдХ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рд▓реЗрдХрд┐рди рд╡реЗ рд╣реИрдВ :) рдЖрдк рдЕрдкрдиреЗ рдСрдЯреЛ-рдЬреЗрдирд░реЗрд╢рди рдЯреВрд▓ рд╕реЗ рдЬреЛ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЖрдкрдХреЗ рд╕рдВрдХрд▓рди рдореЗрдВ рдкреНрд░рд╡рд╛рд╣рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдЯреВрд▓ --strictNullChecks
рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХрд╛ рдХреЛрдб рдЧреИрд░-рднреНрд░рд╛рдордХ рдкреНрд░рдХрд╛рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реИред
рдЪреЗрдХ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╕рд┐рд░реНрдл рдлрд╛рдпрд░ рдЕрд▓рд╛рд░реНрдо рдХреЛ рдордлрд▓ рдХрд░рдирд╛ рд╣реИред рдореБрджреНрджрд╛ рдЕрд▓рд╛рд░реНрдо рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЖрдЧ рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реИред
@mhegazy рдореИрдВ рдХреЛрдб рдореЗрдВ рдлрд╛рдпрд░ рдЕрд▓рд╛рд░реНрдо рдХреЛ
рдХреИрд╕реЗ рдПрдХ рдХрдо рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореЗрдВ рдПрдХ рдЕрдкреНрд░рдпреБрдХреНрдд рд╕реНрдерд╛рдиреАрдп рд╣реИ? рдЗрд╕рд╕реЗ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬрд╣рд╛рдВ рдореБрдЭреЗ tsconfig рдореЗрдВ noUnusedLocals
рдмрдВрдж рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ - рдЬреЛ рдореИрдВ рдЕрднреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдХреИрд╕реЗ рдПрдХ рдХрдо рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореЗрдВ рдПрдХ рдЕрдкреНрд░рдпреБрдХреНрдд рд╕реНрдерд╛рдиреАрдп рд╣реИ? рдЗрд╕рд╕реЗ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬрд╣рд╛рдВ рдореБрдЭреЗ tsconfig рдореЗрдВ noUnusedLocals рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рд╣реИ - рдЬреЛ рдХрд┐ рдореИрдВ рдЕрднреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдпрджрд┐ рдЖрдк рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ .js рдореЗрдВ рдПрдХ рд╕рд╛рдереА .d.ts рдХреЗ рд╕рд╛рде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдЖрдк рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рд╕рдВрдХрд▓рдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрдВрдбрд░рд╕реНрдХреЛрд░.рдЬреЗрдПрд╕ рдорд┐рд╢реНрд░рдг рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
_.mixin(){sortFunciton: SortFunc(), OtherChainFunc: OtherFunction()}
....
someVal = _.chain(someArray)
.рд╕реЙрд░реНрдЯрдлрдВрдХреНрд╢рди ()
.otherChainFunc()
редрдореВрд▓реНрдп();
...
рдПрдХ рдмрд╣реБрдд рдЖрд╕рд╛рди рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрдм рдЖрдк рдХреНрд▓рд┐рдХ рдХреЗ рд▓рд┐рдП рд╢реНрд░реЛрддрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдХреЗ рд▓рд┐рдП @HostListener()
рдХреЗ рд╕рд╛рде, рдЬреИрд╕реЗ:
@HostListener('click', ['$event'])
onClick(event: MouseEvent) {
// Code here...
}
рдЕрдЧрд░ рдореИрдВ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реВрдВ noUnusedLocals
, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╣реИ:
ERROR in ./src (20,13): 'onClick' is declared but never used.
рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореИрдВ рд╕рдВрдХрд▓рдХ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
@ рдЬреЗрд░реЗрдореА рдХрд╛рд░реНрд▓рд╕реНрдЯрди
_.mixin(){sortFunciton: sortFunc(), otherChainFunc: otherFunction()}
рдЕрдорд╛рдиреНрдп рдХреЛрдб рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
@leocaseiro рдЗрд╕реЗ рдирд┐рдЬреА рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ onClick
рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдгреАрдп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣рдореЗрд╢рд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдо рдирд┐рдЬреА рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░реЗрдВред рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХреЛрдгреАрдп рдХреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗ рд░рд╣реЗ рд╣реИрдВред
рд╣рд╛рдп @ jmlopez-рд░реЙрдб, рддреБрдо рд╕рд╣реА рд╣реЛред
рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЬрдирддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдЕрдм рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИ! рдореИрдВ рд╕рдЪрдореБрдЪ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред
@leocaseiro public рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреГрд╢реНрдпрддрд╛ рд╕реНрддрд░ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рд▓рдЧ рд░рд╣рд╛ рд╣реЛ рддреЛ рдЕрдЧреНрд░рд┐рдо рдорд╛рдлреА - рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭрд╕реЗ рдХреБрдЫ рдЫреВрдЯ рдЧрдпрд╛ рд╣реЛ (рдЯреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдирдпрд╛)ред
рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг (рдореИрдВ рдХреЗрд╡рд▓ ES5 рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рдХреЛрдИ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ, рдШреЛрд╖рдгрд╛, рдЗрдВрдЯрд░рдлреЗрд╕рд┐рдВрдЧ рдирд╣реАрдВ)
// do-as-i-tell-you-start
const factory = () => {
const _this = [];
let _value;
Object.defineProperties(_this, {
// Error: Property 'getset' does not exist on type 'any[]'.
// true at at creation but not when used тАУ don't MOM me!
'method1': { value(){ return _this.getset; } },
// Works with property strings тАУ I don't want this
'method2': { value(){ return _this['getset']; } },
'getset': { get(){ return _value; }, set(value){ _value = value } },
});
return _this;
}
рдирд┐рд░реНрдорд╛рдг рдкрд░ рд╕рдЪ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдореБрдЭреЗ рдорд╛рдБ рдордд рдХрд░реЛ!
рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкреНрд╕ рдФрд░ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЕрднреА рднреА рдХреЛрдб рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреНрдпреЛрдВ рдХрд░реЗрдВ, рдХрд┐рд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП?
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреНрдпреЛрдВ рдХрд░реЗрдВ, рдХрд┐рд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП?
рдпрд╣ ES5 => ES6 (рдмреЗрдмреЗрд▓ рдпрд╛ TS) => TS рд╕реЗ рдПрдХ рдЯреАрдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ - рдпрд╣ рд╕рдм рдорд╣рд┐рдорд╛ рд╣реИ - рдмреЗрдмреА рд╕реНрдЯреЗрдкреНрд╕ рдореЗрдВред
рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдпрд╣ рдереА рдХрд┐ TS, JS рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрд╕ рд╕реНрддрд░ рдкрд░ рдХрджрдо рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдк рд╣реИрдВред
рдореЗрд░реА рд╢рд┐рдХрд╛рдпрдд рдХрд╛ рдХрд╛рд░рдг рдбрдореА рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП _does
ES5_ рдХрд╛ рдЙрддреНрдкрд╛рджрди рди рдХрд░реЗрдВред IMO рдкрд╛рд╕рд┐рдВрдЧ рд▓рд╛рдЗрдирд┐рдВрдЧ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рддреНрд░реБрдЯрд┐ рдкрд░ рдХреЛрдИ рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрдЧрд╛ред рддреЛ рдпрд╣ ES5 рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдирд╣реАрдВ рдерд╛ - рдмреИрдмреЗрд▓ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ - рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛
tsc
рдХреЛ рдЯрд╛рдЗрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, noEmitOnError
рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗрдВред
рдпрджрд┐ рдЖрдк ts-loader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдореЗрдВ рдПрдХ рдирдпрд╛ transpileOnly
рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдХреЗрд╡рд▓ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рдПрдЧрд╛ред
@trusktr рдзрдиреНрдпрд╡рд╛рдж - рдореИрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рджреВрдВрдЧрд╛ :-)
рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдкреАрдврд╝реА рдХреЛ рдЯреВрд▓рд┐рдВрдЧ
рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдПрдХ (рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп - рдпрд╣ рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╕реЗ рдЖрддрд╛ рд╣реИ) рд╕реЗрдЯрдЕрдк рд╣реИ рдЬреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреНрд░реИрд╢ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рднреА рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡рд╛рдкрд╕ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ рдЬрдм рдкреВрд░реА рдЯреАрдо рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрдорд╛рдг "рдХрд╛рдо" рдХрд░ рд░рд╣рд╛ рд╣реИ? рдЗрд╕реА рддрд░рд╣ рдпрджрд┐ tsc рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рддреЛ рдСрдЯреЛ-рд░реАрдлреНрд░реЗрд╢ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдкреНрд▓рдЧрдЗрди рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ - рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдЧрд▓рдд рд╣реИ [рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЧрд▓рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ] рддреЛ рдпрд╣ рд░реАрдлреНрд░реЗрд╢ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред
tsc рдореЗрдВ рдмрдЧ рд╣реЛрдиреЗ рдкрд░ рдПрд░рд░ рдХреЛ рджрдмрд╛рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕реЗ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
interface A {
isEmpty(x: any[] | string | object): boolean;
}
const a: A = <A>{};
a.isEmpty({a: 1});
рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдЯреАрдПрд╕ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ (рдЧрд▓рдд рд▓рд╛рдЗрди рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЧрдИ)
рджреНрд╡рд╛рд░рд╛
a.isEmptyObject ({рдП: 1});
рддреБрдореНрд╣рд╛рд░рд╛ рдорддрд▓рдм рд╣реИ
a.isEmpty({a: 1});
?
рдУрд╣ рд╣рд╛рдВред рдЧрд▓рдд рд▓рд╛рдЗрди рдХреЙрдкреА рдХреА рдЧрдИ: /ред
tsc рдореЗрдВ рдмрдЧ рд╣реЛрдиреЗ рдкрд░ рдПрд░рд░ рдХреЛ рджрдмрд╛рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред
рдЙрддреНрд╕рд░реНрдЬрди рдХреЛ рд░реЛрдХрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдмрдЧ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдмрд╣реБрдд рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣рд░ рдХрд╛рд░рдг tsc рдЕрдЪрд╛рдирдХ рдХреБрдЫ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдЧреА рдЬрдм рдЙрд╕рдореЗрдВ рдХреЛрдИ рдмрдЧ рд╣реЛ рдЬреЛ рдЗрд╕реЗ рдХреНрд░реИрд╢ рдХрд░ рджреЗред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрдпрд╛рдд рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
import * as reducers from "./**/reducer.ts"
рдореИрдВ рдкрд╣рд▓реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдмреИрдмреЗрд▓ рдХрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рд╣реИ рдЬреЛ рдЖрдпрд╛рдд рдореЗрдВ *
рдХреЛ рдЧреНрд▓реЛрдм рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ .ts
рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрджрд┐ .ts
рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рд▓рд╛рдЗрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдореИрдкрд┐рдВрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди *
рдХреЛ рд╡рд╣рд╛рдВ рднреА рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрдЪ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрдХрд▓рдХ рдХреЗ рджрд╛рдпрд░реЗ рдХреЗ рднреАрддрд░ рдПрдХ .d.ts рдореЗрдВ @lukescott:
declare module './**/reducer' {
export = {
[reducer: string]: () => void; /* or whatever */
};
}
рдпрд╣ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЗрд╕рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:
const req = https.request({
host: 'www.google.com',
method:'GET',
path:'/',
port: 443,
}, (res) => {
console.log(res.connection.getPeerCertificate());
});
getPeerCertificate
рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдиреЛрдб https ( рдпрд╣ рднреА ) рдореЗрдВ рджреЛрд╖рдкреВрд░реНрдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдЕрднреА рднреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрдбрд╝реЗ рд▓рд╛рд▓ рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
console.log(res.connection.getPeerCertificate()); //ts:disable-line
@trusktr
рдЙрдлрд╝ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдареЗрд╕ рдХреЛрдб рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЬреЛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЙрд╕рдХрд╛ рдПрдХ рдЬреЗрдПрд╕ рдкреНрд▓рдВрдХ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдерд░реНрдб рдкрд╛рд░реНрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА ts рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд░рд╣реА рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣рдореЗрдВ рдХреЛрдб рдХреА рдЙрд╕ рд▓рд╛рдЗрди рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
+1ред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдХреЛрдб рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рд╡рд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛ рд╕рдВрднрд╡рддрдГ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП !
рдХрд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рд╣реЛрдЧреАред
рдЕрдЧрд░ рдореИрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реНрдЯрдЬ), рддреЛ рдореИрдВ рдЕрдХреНрд╕рд░ рдЗрд╕реЗ рдПрдХ рдЯреАрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ (рдореИрдВ рд╕рднреА рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреАрдПрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЬреЗрдПрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ) рдФрд░ рдЗрд╕реЗ рдЯреАрдПрд╕ рдореЗрдВ рдЯреНрд░рд┐рдкрд▓ рд╕реНрд▓реИрд╢ рд░реЗрдлрд░реА рдХреЗ рд╕рд╛рде рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВред рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдм рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдВрддрд╣реАрди рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ (рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдирдХ JS рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ TS рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ)ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛:
/*ts-errors-disable*/
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рддрдХ рдФрд░ /*ts-errors-enable*/
рдЕрдВрдд рддрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛ рдЬреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рджреЗрд╡реЛрдВ рдХреЛ рд╕рднреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреАрдПрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
@benfrain рдареАрдХ рд╣реИ, рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИ ( npm install --save-dev @types/mylibrary
) рд╕рдВрдмрдВрдзрд┐рдд рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрд╛ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ any
рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЦреБрдж рдХреА _.d.ts_ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ /рдореБрдЦреНрдп рд╡рд░реНрдЧ рдкреНрд░рдердо:
// mylibrary.d.ts
declare module "mylibrary" {
let mylibrary: any;
export = mylibrary;
}
// main.ts
import mylibrary = require("mylibrary");
...
рдореЗрд░рд╛ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред рдкрд╣рд▓рд╛ рдХреЛрдб, рдФрд░ рддреНрд░реБрдЯрд┐ рдЬрд┐рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ:
import {Directive, ElementRef, Input, OnChanges, SimpleChange} from '@angular/core'
@Directive({
selector: '[blankAttr]',
})
export class BlankAttr implements OnChanges {
@Input('blankAttr') private attrName: string // <--- TS Error: unused variable
constructor(private el: ElementRef) {}
public ngOnChanges(changes: {[key: string]: SimpleChange}): void {
const change: any = changes.attrName
const prevValue: any = change.previousValue
if (prevValue) {
this.el.nativeElement.removeAttribute(prevValue)
}
this.el.nativeElement.setAttribute(change.currentValue, '')
}
}
рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ @Input
рдбреЗрдХреЛрд░реЗрдЯрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдХреЗрд╡рд▓ рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдореВрд▓реНрдп рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рд╡рд╣ рдмрджрд▓рддрд╛ рд╣реИред рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рдореИрдВ рдкрд┐рдЫрд▓рд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдХреНрдпрд╛ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ // ts-ignore
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╛ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ?
@uglow attrName
рдирд┐рдЬреА рдХреНрдпреЛрдВ рд╣реИ? рдпрд╣ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдПрдВрдЧреБрд▓рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
@ jmlopez-rod рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИред TS рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░ рд╣реИред
рдореИрдВ рдЯреАрдПрд╕ 2.4.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рддреНрд░реБрдЯрд┐ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
рдкрд╣рд▓реЗ:
рдмрд╛рдж рдореЗрдВ:
рдореИрдВ 2.3.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ 2.4.1 рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж
рдЗрд╕рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рдПрдХрд▓ .js рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рд╛рд░ рджреЗрдЦреЗрдВ ред рдореИрдВ рдЕрдкрдиреА .js рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ TS рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдФрд░ рдлреЗрдВрдХрддрд╛ рд╣реИ:
A 'return' statement can only be used within a function body.
рдПрдХ рдирдпрд╛ SO рдкреНрд░рд╢реНрди рдЬрд┐рд╕реЗ noUnusedLocals
рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
https://stackoverflow.com/questions/45519476/is-it-a-typescript-antipattern-to-dynamically-call-a-member-function-stored-in-a
@mhegazy рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдорд╛рд░рд╛ рд╣реИред
рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (рд╕рдВрдкреВрд░реНрдг рдкреНрд░рд╡рд╛рд╣ рдШреЛрд╖рдгрд╛ рдореЛрдб рдорд╛рдирддрд╛ рд╣реИ):
Return type of public method from exported class has or is using private name
рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдВ рдореВрд▓ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдЬрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝рдирд╛ рдЕрдиреБрдЪрд┐рдд рд╣реИред рдЗрд╕ рдмреАрдЪ, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрджрд╛рд░реА рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдХреЗрд╡рд▓ рджрдмрд╛ рджреВрдВред рдореИрдВ рдареАрдХ рд╣реВрдБ рдЕрдЧрд░ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ // TS-LIMITATION:#9448
рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдирдП рд╡реНрдпрд░реНрде рдореБрджреНрджреЗ рд╣реЛрдВрдЧреЗред
рдпрджрд┐ рдЖрдк рдЙрди рдЬреНрдЮрд╛рдд рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖рд┐рдд рджрдорди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрднреА рддрдХ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореИрдВ рднреА рдареАрдХ рд░рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдпрд╣ рдЬрд▓реНрджреА рдФрд░ рдмрд┐рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреНрд░рдпрд╛рд╕ рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ (рдЬреЛ рддрдВрддреНрд░ рдХреЛ рд╡реНрдпрд░реНрде рдмрдирд╛ рджреЗрдЧрд╛: рдкрд▓рдХ:)
рдЬрдм рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдкрд╣реБрдВрдЪрдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ (рдЬрд╣рд╛рдВ рдореБрдЭреЗ "рдпрд╣рд╛рдВ рдкрд╣реБрдВрдЪрдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рддреНрд░реБрдЯрд┐ рдкрд░ рдЪреБрдк рд░рд╣реЗрдВ") рдПрдиреЛрдЯреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╣реЛ рд░рд╣реА рд╣реИ
if (false){ ...complicated debug code that I dont want to delete/forget... }
рдЗрд╕рд▓рд┐рдП, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдЕрднреА рднреА "рд╢рдЯ рдЕрдк рдФрд░ рдЕрдиреНрдп рдЯреВрд▓реНрд╕ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рди рдХрд░рдиреЗ" рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдпрд╛ рдЧреНрд▓реЛрдм рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрд╡рд┐рдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рд╣рдо рдЯреВрд▓ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдлрдВрд╕ рдЧрдП рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдСрдЯреЛ-рд░реАрд▓реЛрдб рдЦреЛрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдСрдЯреЛ-рд░реАрд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╛ рддреЛ рдмрдЧреНрдЧреА рд╡рд┐рдХрд▓реНрдк рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ noImplicitAny (рдЬреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рдореИрдВ рдЯрд╛рдЗрдк-рдЪреЗрдХрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдЯреЗрдмрд▓ рдкрд░ рдЗрддрдирд╛ рдирд╣реАрдВ рд▓рд╛рддрд╛ рд╣реИ) рдпрд╛ рдкреИрдХреЗрдЬ рдХреЗ рдкреНрд░рд╛рдЪреАрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдмрдиреЗ рд░рд╣реЗрдВред рд╣рд╛рдВ, рдореИрдВрдиреЗ рд╡реЗрдмрдкреИрдХ рдФрд░ рд╡рд┐рд╕реНрдордпрдХрд╛рд░реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдбрд░ рджреЛрдиреЛрдВ рдореЗрдВ рдмрдЧ рдХреА рд╕реВрдЪрдирд╛ рджреА, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИред рдХрдИ рдорд╣реАрдиреЛрдВ рд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреА рдЕрдирджреЗрдЦреА рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИ :-(ред
@polyglotinc if (!!false) {
@RyanCavanaugh рдареАрдХ рд╣реИ, рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, (!true)
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ... рдореИрдВрдиреЗ рдЙрдирдХреЛ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ _ (рдПрдХ рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рдХ-рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ) _ рдиреЗ рдирд┐рд░рдВрддрд░/рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рдВрдХрд▓рдХ рдХреЛ рдЕрдзрд┐рдХ рдХреНрд░реЗрдбрд┐рдЯ рджрд┐рдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдврд╣ рд░рд╣реА рд╣реИ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЕрдЧрд░ рдпрд╣ if (false)
рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╡реНрдпрд╕реНрдд рдирд┐рдХрд╛рдп рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ if (!true)
рд╡рд╣реА рдмрд╛рдд рдереА!
@unional SO рдкреНрд░рд╢реНрди рдХреЛ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдЗрд╕реАрд▓рд┐рдП рд╣рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЛ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рджреЗрдЦреЗрдВ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрдмрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝реА рдЧрдИ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
private keyHandlers = {
'ArrowDown': function ($event: any) {
this.handleArrowDown($event);
},
'ArrowUp': ($event: any) => {
this.handleArrowUp($event);
},
};
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ handleArrow*
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ this
рдореЗрдВ this.handleArrowDown($event);
рдХреЛрдИ рднреА рд╡рд╕реНрддреБ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзрд┐ handleArrowDown
ред рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЕрдм рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ this
рд╡рд░реНрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ handleArrowUp
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк: рдирдХрд▓реА рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ this
ред
private keyHandlers = {
'ArrowDown': function (this: SomeComponent, $event: any) {
this.handleArrowDown($event);
},
'ArrowUp': ($event: any) => {
this.handleArrowUp($event);
},
};
@ jmlopez-рд░реЙрдб рдзрдиреНрдпрд╡рд╛рджред рдпреЗ рдЕрдЪреНрдЫреЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ function(this: SomeComponent, ...) {...}
рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд▓рдЪреАрд▓рд╛ рд╣реИред
рдпрджрд┐ keyHandlers
рд╡рд░реНрдЧ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
const keyHandlers = {
'ArrowDown': function (this: SomeComponent, $event) {
this.handleArrowDown($event); // error on accessing private method, filing an issue for it.
},
'ArrowUp': ($event) => { // doesn't work, duh
this.handleArrowUp($event);
}
}
export class SomeComponent {
onKeyDown($event) {
if (typeof keyHandlers[$event.code] === 'function') {
keyHandlers[$event.code]($event);
}
}
private handleArrowDown(_event) {
// ...
}
private handleArrowUp(_event) {
// ...
}
}
рджреВрд╕рд░реА рдУрд░, рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрд░реЛ рдлрдВрдХреНрд╢рди рд╕рдмрд╕реЗ рд╕реАрдзрд╛ рд╣реИред
рдореИрдВ console.log
рдЙрдкрдпреЛрдЧ рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП IE9 рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ window.console
рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
if (!window.console)
window.console = {};
рд▓реЗрдХрд┐рди рдореБрдЭреЗ error TS2540: Cannot assign to 'console' because it is a constant or a read-only property.
рдХреНрдпрд╛ рдЗрди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?
@amiraliakbari рдЖрдк window
рдХреЛ any
рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЦрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рд╕реЗ рдСрдкреНрдЯ рдЖрдЙрдЯ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ:
(window as any).console = {};
рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ console.log
рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб/рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ - рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Project.logging
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
(window.console as any).___real_log = window.console.log;
window.console.log = function(args) {
if (Project.logging) return (window.console as any).___real_log(args);
return;
};
рдпрд╣ рдореЗрд░реЗ рдкреВрд░реЗ рдХреЛрдб рдореЗрдВ if
рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдбрд╛рд▓рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рдл рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ console.log
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
рдЬреИрд╕рд╛ рдХрд┐ #19109 рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ #19109 рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рджрдорди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рдЪреНрдЫреБрдХ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдХрдореА рд╣реИред
#19139 рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред
рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдХреНрдпрд╛ рдЗрд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
рдирд┐рд░реНрджреЗрд╢ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╣реА рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдо рд╕рдЦреНрдд рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ noImplicitAny
рдХреЛ рдЫреЛрдбрд╝рдирд╛ (рдпрд╛рдиреА, рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ any
рдпрджрд┐ рдирд╣реАрдВ рдПрдиреЛрдЯреЗрдЯ)ред рдЖрдк рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ JS рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ allowJs
рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди checkJs
рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛? рд╕рдорд╛рдзрд╛рди рдЕрднреА рдмрд╛рдХреА рд╣реИ! рдПрдХ рдЙрдЪрд┐рдд рддреНрд░реБрдЯрд┐-рджрдмрд╛рдиреЗ-рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рдмрдЬрд╛рдп рдЖрдк 2 рд╕рд╛рд▓ рддрдХ рд╡реНрдпрд░реНрде рдЪрд░реНрдЪрд╛ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?
@ webia1 рдЖрдкрдХреА рд░реБрдЪрд┐ #19139 рдореЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИред
(рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдпрд╣рд╛рдВ рдЬреЛрдбрд╝рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛)
рдореИрдВ https://github.com/Microsoft/TypeScript/pull/21602 рдкрд░ рднрд╛рдЧрд╛ рдФрд░ рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдмрд╕ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ // @ts-ignore
рдЬреЛрдбрд╝реЗрдВ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ ред// @ts-ignore <some code error>
рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.7.2 рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
(рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ // @ ts-рдЕрдирджреЗрдЦрд╛
рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред
@RyanCavanaugh рддреБрдо рд╕рд╣реА рд╣реЛ! рдореИрдВрдиреЗ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдЕрдкрдбреЗрдЯ рдХрд░ рд▓реА рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!
рддреНрд░реБрдЯрд┐ TS2339 рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдкрд╣реБрдВрдЪреЗред
document.getElementById('theme-admin').disabled = false; /* tslint:disable */
document.getElementById('theme-member').disabled = true; /* tslint:disable */
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдмрд╕ рдЗрд╕реЗ рдХрд╛рд╕реНрдЯ рдХрд░реЗрдВ (рдХрд╛рд╕реНрдЯ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ)
рдХреНрдпрд╛ рдЖрдк рдпрд╣реА рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ?