Typescript: рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд▓реМрдЯрдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг: 2.3.2

рдХреЛрдб

// example.js

var Person = function (firstNameOrPojo, lastName) {

    if (typeof firstNameOrPojo === "string") {
        this.firstName = firstNameOrPojo;
        this.lastName = lastName;
    } else {
        return new Person(firstNameOrPojo.firstName, firstNameOrPojo.lastName);
    }
};

Person.prototype.greet = function greet() {
    return `Hello, I am ${this.firstName} ${this.lastName}.`;
};

var fred = new Person({firstName: "Fred", lastName: "Flintstone"});

console.log(fred.greet());

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░:

рдореИрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдпрд╛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsc рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реВрдВрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд▓реМрдЯрд╛ рд╣реБрдЖ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрд╢рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдЪрдирд╛рдХрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИред рдЬрдм рдРрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реМрдЯреА рд╣реБрдИ рд╡рд╕реНрддреБ рдкреВрд░реЗ new рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрди рдЬрд╛рддреА рд╣реИ ( рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕

рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдХреЗ рдЗрд╕ рдХреНрд╡рд┐рдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рдХреНрдпреЛрдВ рд╣рд┐рдЪрдХрд┐рдЪрд╛рдПрдЧрд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╕рдВрдХрд▓рдХ рдХреЛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ undefined (рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛) рд▓реМрдЯрд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐:

  1. рдЯреАрдПрд╕ рдЬреЗрдПрд╕ рдХрд╛ рд╕реБрдкрд░рд╕реЗрдЯ рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИред
  2. рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХрдиреАрдХ рд╣реИ

    рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб Node.js рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдареАрдХ рдЪрд▓рддрд╛ рд╣реИ:

$ node example.js
Hello, I am Fred Flintstone.

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░:

tsc рдЗрд╕ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп рдПрдХ рддреНрд░реБрдЯрд┐ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ:

$ tsc --allowJs --checkJs --outDir ./dist example.js
example.js(8,16): error TS2350: Only a void function can be called with the 'new' keyword.

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

+1

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

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

рдкреНрд░рдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдХреНрдпрд╛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ; рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдХрд╛рд░ред рддреНрд░реБрдЯрд┐ .js рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреИрдЯрд░реНрди рдХреЛ рдЕрднреА рднреА рдПрдХ .ts рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд░реВрдврд╝рд┐рд╡рд╛рджреА рдкрдХреНрд╖ рдкрд░ рддреНрд░реБрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ)ред

+1

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

рдЕрдЧрд░ рддреБрдо рдбрд╛рд▓ рд╕рдХрддреЗ
get(target, name) {}
рддрдерд╛
set(target, name, value) {}
рдСрдмреНрдЬреЗрдХреНрдЯ (рдПрд░реЗ) рдХреА рдХрд┐рд╕реА рднреА (рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП) рд╕рдВрдкрддреНрддрд┐ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдЕрдВрджрд░, рдлрд┐рд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ ... рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
[рдЕрдиреНрдпрдерд╛ рдлрд┐рд░ рд╕реЗ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдирдП рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред]

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

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

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

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

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

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

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