рдХреБрдЫ рджрд┐рди рдкрд╣рд▓реЗ рд╣рдордиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рдХреЗ рд╣рдорд╛рд░реЗ рд░рд┐рд▓реАрдЬ рдЙрдореНрдореАрджрд╡рд╛рд░ (рдЖрд░рд╕реА) рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рд╣рдорд╛рд░реА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдлреАрдбрдмреИрдХ рдФрд░ рд╢реБрд░реБрдЖрддреА рдореБрджреНрджреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╣рдорд╛рд░реА рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬ рдЕрднреА рд╕реЗ рд▓реЗрдиреЗ рдФрд░ рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд╣реИред
рдЖрд░рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ NuGet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
npm install -g typescript@rc
рдЖрдк рд╕рдВрдкрд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рд╕рд╣рд╛рдпрддрд╛ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ 3.4 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ!
рдпрд╣ рд▓реЗрдЦ рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВредрдмрд╛рдж рдореЗрдВ рддреЗрдЬрд╝ - --incremental
рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдмрдирд╛рддрд╛ рд╣реИ
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╛рдЗрд▓реЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдЪрд░рдг рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреА рд╣реИред рд╣рдорд╛рд░рд╛ рдПрдХ рд▓рдХреНрд╖реНрдп рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдирд┐рд░реНрдорд┐рдд рд╕рдордп рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЯрд╛рдЗрдкрд╡рд╛рдЪ - рдЗрди рдореЛрдб рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЬрдм- --watch
рдореЛрдб рдХреЗ рддрд╣рдд рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрджрд▓ --watch
рд╣реИ, рддреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреБрди: рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░-рдЬрд╛рдВрдЪ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрди рд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдорд╣рдВрдЧрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд▓ рд╕реБрдмрд╣ рддреЗрдЬреА рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдд рднрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА tsc --watch
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рдирд╛ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИред рдардВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВ? рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ, рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА --watch
рдореЛрдб рд╕реЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕реЗ рдмрд┐рд▓реНрдб рд╕реЗ рдмрд┐рд▓реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рдПрдХ рдирдпрд╛ рдзреНрд╡рдЬ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ --incremental
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдВрддрд┐рдо рд╕рдВрдХрд▓рди рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреНрд░рд╛рдл рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред рдЕрдЧрд▓реА рдмрд╛рд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ --incremental рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ --incremental
, рдпрд╣ рдЙрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдФрд░ --incremental
рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдЦрд░реНрдЪреАрд▓реЗ рддрд░реАрдХреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧрд╛ред
рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЬрдм рд╣рдо tsc рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдорд╛рд░реЗ рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА ( ./lib
) рдореЗрдВ .tsbuildinfo
рдирд╛рдордХ рдПрдХ рдлрд╛рдЗрд▓ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ ./lib/.tsbuildinfo
рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЙрддреНрдкрдиреНрди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ tsc
рдЙрд╕ рдлрд╛рдЗрд▓ рдХреЛ incrementally рдЯрд╛рдЗрдк-рдЪреЗрдХ рдХрд░рдиреЗ рдФрд░ рд╣рдорд╛рд░реА рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ред
рдпреЗ .tsbuildinfo
рдлрд╛рдЗрд▓реЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдбрд╛рд▓рддреА рд╣реИрдВ - рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рди рддреЗрдЬреА рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рднреА рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╣реАрдВ рднреА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рдо рдЪрд╛рд╣реЗрдВ рддреЛ --tsBuildInfoFile
рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЬрдм рддрдХ рдХреЛрдИ рдФрд░ рдПрдХ рд╣реА рдХреИрд╢ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддрдм рддрдХ рд╣рдореЗрдВ рддреЗрдЬреА рд╕реЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдардВрдб рдХрд╛ рдЖрдирдВрдж рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдордЧреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ
рд╕рдордЧреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд░рд╛рджреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ ( tsconfig.json
s рдХреЗ рд╕рд╛рде composite
рд╕реЗрдЯ true
) рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕реЗ, рдорд┐рд╢реНрд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣рдореЗрд╢рд╛ .tsbuildinfo
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди .tsbuildinfo
ред
outFile
рдЬрдм outFile
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдпрджрд┐ рд╣рдорд╛рд░реА рдЖрдЙрдЯрдкреБрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ ./output/foo.js
, рддреЛ --incremental
рдзреНрд╡рдЬ рдХреЗ рдиреАрдЪреЗ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ ./output/foo.tsbuildinfo
ред рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ --tsBuildInfoFile
рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
--incremental
рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рдФрд░ рд╕рдВрд╕реНрдХрд░рдг
рдЬрдмрдХрд┐ --incremental
рджреНрд╡рд╛рд░рд╛ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╛рдЗрд▓ JSON рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╛рдЗрд▓ рдХрд╛ рдорддрд▓рдм рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреВрд▓ рд╕реЗ рдЦрдкрдд рдирд╣реАрдВ рд╣реИред рд╣рдо рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рддрд╛ рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реА рд╡рд░реНрддрдорд╛рди рдиреАрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХреЛрдИ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЙрддреНрдкрдиреНрди .tsbuildinfo
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдордЭ рдирд╣реАрдВ .tsbuildinfo
ред
ReadonlyArray
рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ readonly
рд▓рд┐рдП рд╕реБрдзрд╛рд░
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рдпрд╣ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгреА рдкреНрд░рдХрд╛рд░ рдХреА рддрд░рд╣ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
ReadonlyArray
рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕
ReadonlyArray
рдкреНрд░рдХрд╛рд░ Array
s рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ReadonlyArray
рд╣реИрдВрдбрд▓ рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдЪрд░ рд╕рд░рдгреА рдХреЗ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝, рд╣рдЯрд╛ рдпрд╛ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред
function foo(arr: ReadonlyArray<string>) { arr.slice();
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд░рд╛рджреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП Array
рдХреЗ рдКрдкрд░ ReadonlyArray
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЕрдХреНрд╕рд░ рдПрдХ рджрд░реНрдж рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, number[]
Array<number>
рдХрд╛ рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬрд┐рд╕ рддрд░рд╣ Date[]
Array<Date>
рд▓рд┐рдП рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рд╕рд░рдгреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рд░реАрдбрд╛рдпрдирд▓реА рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ReadonlyArray рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред
function foo(arr: readonly string[]) { arr.slice();
readonly
рдЯреНрдпреВрдкрд▓реНрд╕
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреБрдкрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдирдП рд╕рдорд░реНрдерди рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред рд╣рдо рдХрд┐рд╕реА рднреА tuple рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ readonly
рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХреЗ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм рд╣рдо рдРрд░реЗ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдп рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬрд┐рдирдХреЗ рд╕реНрд▓реЙрдЯреНрд╕ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрдпреВрдкрд▓ рдХреЗрд╡рд▓ рдЙрди рдкрджреЛрдВ рд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
function foo(pair: readonly [string, string]) { console.log(pair[0]);
рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬреЛ рд╕рд╛рдзрд╛рд░рдг рдЯреНрдпреВрдкрд▓реНрд╕ рд╣реИрдВ рдЬреЛ Array
рд╕реЗ рдлреИрд▓рддреЗ рд╣реИрдВ - рдЯрд╛рдЗрдк 1
, T
2
рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреНрдпреВрдкрд▓ ... T
n
Array<
рд╕реЗ рдлреИрд▓рддрд╛ рд╣реИ Array<
T
1
| T
2
| ... T
n
>
- рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдврд╝реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬреЛ ReadonlyArray
рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рддреЛ рддрддреНрд╡реЛрдВ T
1
, T
2
, ... рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрдпреВрдкрд▓ ReadonlyArray<
T
1
рд╕реЗ T
рдлреИрд▓рддрд╛ рд╣реИред T
2
| ... T
n
>
ред
readonly
рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕рдВрд╢реЛрдзрдХ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреВрд░реНрд╡ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рд╕рд░рдгреА-рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдерд╛ рдХрд┐ Boxify
рдЬреИрд╕рд╛ рдПрдХ рдореИрдкреНрдб рдкреНрд░рдХрд╛рд░ рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдЯреНрдпреВрдкрд▓реНрд╕ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
interface Box<T> { value: T } type Boxify<T> = { [K in keyof T]: Box<T[K]> }
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Readonly
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдХрд╛рд░ рдЬреИрд╕реЗ рдореИрдк рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╕рд░рдгреА рдФрд░ рдЯрдкрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдиреЛ-рдСрдк рдереЗред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рдореЗрдВ, рдореИрдк рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрд╢реЛрдзрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд░рдгреА-рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддрд┐рд░реВрдк рд╕рдордХрдХреНрд╖реЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред
рдЗрд╕реА рддрд░рд╣, рдЖрдк рдПрдХ рдЙрдкрдпреЛрдЧреА рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдореИрдкреНрдб рдкреНрд░рдХрд╛рд░ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдкреНрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд░рдгреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЙрдирдХреЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдордХрдХреНрд╖реЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред
type Writable<T> = { -readonly [K in keyof T]: T[K] }
рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ
рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЖрд╕рд╛рдиреА рд╕реЗ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╕рд░рдгреА рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдЯреБрдкрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рдкреНрд░рдХрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИред
let err1: readonly Set<number>;
const
рджрд╛рд╡реЗ
рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЪрд░ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдХреНрд╕рд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЪреМрдбрд╝рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдмрд╛рдж рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
let x = "hello";
рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдмреНрджрд┐рдХ рдореВрд▓реНрдп рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдКрдкрд░, рдкреНрд░рдХрд╛рд░ "hello"
x
рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЯрд╛рдЗрдк string
рд▓рд┐рдП рдЪреМрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛ред
рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╢реНрдп рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ x
рдХрд╛ рдореВрд▓ рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рдХрд╛рд░ "hello"
рдФрд░ рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ "world"
рддрд░рд╣ рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
let x: "hello" = "hello";
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЪрд░рдо рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЕрдХреНрд╕рд░ рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рднреЗрджрднрд╛рд╡ рд░рд╣рд┐рдд рд╕рдВрдШреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред
type Shape = | { kind: "circle", radius: number } | { kind: "square", sideLength: number } function getShapes(): readonly Shape[] { let result = [ { kind: "circle", radius: 100, }, { kind: "square", sideLength: 50, }, ];
рдореНрдпреВрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдЗрд░рд╛рджреЛрдВ рдХреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрдм рдЪреМрдбрд╝рд╛ рдХрд░рдирд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп)ред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦрд╛ рдерд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреБрдгреЛрдВ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдЕрдХреНрд╕рд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдЕрд╡рд╛рдВрдЫрдиреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЪреМрдбрд╝рд╛ рдХрд░реЗрдЧреАред
function getShapes(): readonly Shape[] {
рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рддрдХ рдпрд╣ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдпрд╣ рдмреЛрдЭрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рдиреЗ рд╢рд╛рдмреНрджрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдирд┐рд░реНрдорд╛рдг рдкреЗрд╢ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ рдПрд╢реНрдпреЛрд░реЗрдВрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯрд╛рдЗрдк рдирд╛рдо рдХреЗ рд╕реНрдерд╛рди рдкрд░ const
рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрднрд┐рдХрдерди рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ 123 as const
)ред рдЬрдм рд╣рдо const
рдХрдердиреЛрдВ рдХреЗ рд╕рд╛рде рдирдП рд╢рд╛рдмреНрджрд┐рдХ рднрд╛рд╡реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрд╕ рднрд╛рд╖рд╛ рдХреЛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ
- рдЙрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдХреЛрдИ рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рдХрд╛рд░ рдЪреМрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
"hello"
рд╕реЗ string
рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ) - рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
- рд╕рд░рдгреА рд╢рд╛рдмреНрджрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрдпреВрдкрд▓ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ
.tsx
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд╣рд░, рдХреЛрдг рдмреНрд░реИрдХреЗрдЯ рдЕрднрд┐рдХрдерди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдХреНрд╕рд░ рдорддрд▓рдм рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдЬреЛ рдЕрдиреНрдпрдерд╛ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдХреНрд╕рд░ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдКрдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдХрд╛рд╕реНрдЯ рдПрд╢реНрдпреЛрд░реЗрдВрд╕ рдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рдмрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред
рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ
рдзреНрдпрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реА рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ const
рдПрд╕реЗрдиреНрд╕рд░ рдХреЗрд╡рд▓ рд╕рд░рд▓ рд╢рд╛рдмреНрджрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдкрд░ рддреБрд░рдВрдд рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдФрд░ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ const
рдХреЙрдиреНрдЯреЗрдХреНрдЯреНрд╕ рддреБрд░рдВрдд рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред
let arr = [1, 2, 3, 4]; let foo = { name: "foo", contents: arr, }; foo.name = "bar";
globalThis
рд▓рд┐рдП рдЯрд╛рдЗрдк-рдЪреЗрдХрд┐рдВрдЧ
рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдпрд╛ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╣рдо рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ (рдЬрд┐рд╕рдХрд╛ рд╕реНрдерд╛рдиреАрдп рдШреЛрд╖рдгрд╛рдПрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓реАрдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ), рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЫрд╛рдпрд╛ рдХрд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реИ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдореВрд▓реНрдп рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдХреЛрдк рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ - global
рдЗрди рдиреЛрдб, window
, self
, рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ frames
, рдпрд╛ рд╕рдЦреНрдд рдореЛрдб рдХреЗ рдмрд╛рд╣рд░ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВред рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдореЗрдВ рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд╣реА рдХреЛрдб рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирдП globalThis
рдЯрд╛рдЗрдк рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рдкрд░рд┐рдЪрдп globalThis
- рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░, рдЬреЛ рдХрд┐, рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, globalThis
рд╡реИрд╢реНрд╡рд┐рдХ рдХреНрд╖реЗрддреНрд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
globalThis
рдпрд╣ рднреА рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ globalThis
рдПрдХ globalThis
рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВред
const answer = 42; globalThis.answer = 333333;
рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ ECMAScript рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рд╕рдордп globalThis
рд╕рдВрджрд░реНрдн рдХреЛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ, рдЬрдм рддрдХ рдЖрдк рд╕рджрд╛рдмрд╣рд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА globalThis
рд╕рдорд░реНрдерди globalThis
), рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЙрдкрдпреБрдХреНрдд globalThis
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред
рдирд╛рдорд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ
рдХрднреА-рдХрднреА, рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪрд┐рдпрд╛рдВ рдЕрдирдЬрд╛рдиреА рд╣реЛрдиреЗ рд▓рдЧрддреА рд╣реИрдВред
function updateOptions( hue?: number, saturation?: number, brightness?: number, positionX?: number, positionY?: number positionZ?: number) {
рдЙрдкрд░реНрдпреБрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрд┐рд╕реА рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдорд┐рд▓рд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрдЯрд░реНрди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ "рд╡рд┐рдХрд▓реНрдк рдСрдмреНрдЬреЗрдХреНрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдСрд░реНрдбрд░ рдХрднреА рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдпрд╣ рдПрдХ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдиреЗ "рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░" рдХрд╣рд╛ рд╣реИред
interface Options { hue?: number, saturation?: number, brightness?: number, positionX?: number, positionY?: number positionZ?: number } function updateOptions(options: Options = {}) {
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рд╕рд┐рд░реНрдл рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ - рд╣рдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреЛ рд╕рдореГрджреНрдз рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдЬреИрд╕реЗ рдкреВрд░реНрдгрддрд╛, рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд░рд┐рдлреИрдХреНрдЯреЛрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЗрдВрдЯрд░реНрди рдЧреИрдмреНрд░рд┐рдПрд▓рд╛ рдмреНрд░рд┐рдЯреЛ рдиреЗ рдЗрд╕ "рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░" рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдо рдЕрдкрдиреА рдЕрдВрддрд┐рдо 3.4 рд░рд┐рд▓реАрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдлреАрдЪрд░ рдХрд╛ рдирд╛рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╣рдо рдЖрдкрд╕реЗ рдлрд╝реАрдЪрд░ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдФрд░ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВрдЧреЗред
рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬреЗрд╕
рд╢реАрд░реНрд╖-рд╕реНрддрд░ this
рдЕрдм рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рд╢реАрд░реНрд╖-рд╕реНрддрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЕрдм typeof globalThis
рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдкрдХреЛ noImplicitAny
рддрд╣рдд this
рдкрд░ рдЕрдЬреНрдЮрд╛рдд рдореВрд▓реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ noImplicitThis
рддрд╣рдд рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдпрд╣рд╛рдВ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдкреНрд░рдЪрд╛рд░рд┐рдд рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХ
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЙрдирдХреЗ рдЕрд╡рд░реЛрдз (рдЖрдорддреМрд░ рдкрд░ {}
) рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВред
declare function compose<T, U, V>(f: (arg: T) => U, g: (arg: U) => V): (arg: T) => V; function list<T>(x: T) { return [x]; } function box<T>(value: T) { return { value }; } let f = compose(list, box); let x = f(100)
x
рдкрд░ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди рддреНрд░реБрдЯрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рд╣рдорд╛рд░реА рдкрд╣рд▓реА рд░рд┐рд▓реАрдЬрд╝ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ 6 рдорд╣реАрдиреЗ рдХреЗ рд░реЛрдбрдореИрдк рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдЖрдк рдЙрди рджреЛрдиреЛрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЖрдЧрд╛рдореА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд░реЛрд▓рд┐рдВрдЧ рдлреАрдЪрд░ рд░реЛрдбрдореИрдк рдкреЗрдЬ рдкрд░ рдирдЬрд╝рд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрднреА рд╣рдо рдЖрд░рд╕реА рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрднреА рдПрдХ рд╢реЙрдЯ рджреЗрдВ рдФрд░ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдмрддрд╛рдПрдВ!