เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ›เปเบเบกเบžเบฒเบชเบฒ Haxe 4.0

เบกเบตเปƒเบซเป‰ เบ›เปˆเบญเบเบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท Haxe 4.0, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบกเบตเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบซเบผเบฒเบเบฎเบนเบšเบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบžเบดเบกเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡, เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบ‚เป‰เบฒเบกเปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ. เป‚เบ„เบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเป€เบ›เบฑเบ™ C ++, HashLink / C, JavaScript, C#, Java, PHP, Python เปเบฅเบฐ Lua, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฑเบš JVM, HashLink / JIT, Flash เปเบฅเบฐ Neko bytecode, เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ. เบฅเบฐเบซเบฑเบ” compiler เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” GPLv2, เปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบš Haxe เป€เบ™เป‚เบ เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT.

เบžเบฒเบชเบฒเปเบกเปˆเบ™ เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ เบ”เป‰เบงเบเบเบฒเบ™เบžเบดเบกเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเปเบšเบšเบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡, เบ—เบปเปˆเบงเป„เบ› เปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™.
syntax Haxe เปเบกเปˆเบ™เบขเบนเปˆเปƒเบเป‰เบเบฑเบš ECMAScript เปเบฅเบฐ เบ‚เบฐเบซเบเบฒเบ เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ, autotype inference, เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบฎเบนเบšเปเบšเบš, generics, iterator-based for loops, AST macros, GADT (Generalized Algebraic Data Types), เบ›เบฐเป€เบžเบ” abstract, เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆ, เบ™เบดเบเบฒเบกเบญเบฒเป€เบฃเปเบšเบšเบ‡เปˆเบฒเบ, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚, เบเบฒเบ™เปเบ™เบš metadata เปƒเบชเปˆเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ , classes and expressions, string interpolation ('My name is $name'), type parameters ("new Mainโ€นStringโ€บ('foo')"), เปเบฅเบฐ เบซเบผเบฒเบ.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบŠเบฑเป‰เบ™เบฎเบฝเบ™ {
เบŸเบฑเบ‡เบŠเบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆ main() {
var เบ„เบปเบ™ = [
"Elizabeth" => "เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ„เบ‡เบเบฒเบ™",
"Joel" => "เบญเบญเบเปเบšเบš"
];

เบชเปเบฒเบฅเบฑเบš (เบŠเบทเปˆเปƒเบ™ people.keys()) {
var job = เบ„เบปเบ™[เบŠเบทเปˆ];
trace('$name does $job for a living!');
}
}
}

เบ•เบปเป‰เบ™โ€‹เบ•เป เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒ เบฅเบธเป‰เบ™ 4.0:

  • syntax เปƒเปเปˆเบชเบณเบฅเบฑเบšเบเบฒเบ™เบฅเบฐเบšเบธเบ›เบฐเป€เบžเบ”เบŸเบฑเบ‡เบŠเบฑเบ™ "(เบŠเบทเปˆ:String, age:Int)->Bool" เบซเบผเบท "(String, Int)->Bool" เปเบ—เบ™ "String->Int->Bool".
  • syntax เบŸเบฑเบ‡เบŠเบฑเบ™เบฅเบนเบเบชเบญเบ™เปเบกเปˆเบ™ "(a, b) -> a + b" เปเบ—เบ™ "function(a, b) return a + b".
  • เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปˆเบฒ Null (เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบ›เบตเบ”เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เบ‚เบปเบ‡เป€เบ‚เบ”, เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบซเบผเบทเบŠเบธเบ”).
  • เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ "เบชเบธเบ”เบ—เป‰เบฒเบ" เปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบŠเบฑเป‰เบ™เบฎเบฝเบ™เปเบฅเบฐเบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰. "เบชเบธเบ”เบ—เป‰เบฒเบ" เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡เป‚เบ”เบเบเบฒเบ™เบชเบทเบšเบ—เบญเบ”เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบŠเบฑเป‰เบ™เบฎเบฝเบ™ / เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบทเบšเบ—เบญเบ”เป„เบ”เป‰.
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ Unicode เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™ "String" เปƒเบ™เบ—เบธเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบปเบเป€เบงเบฑเป‰เบ™ Neko.
  • Built-in เบ™เบฒเบเบžเบฒเบชเบฒเบ‚เบฝเบ™เปƒเบซเบกเปˆเบˆเบฒเบ scratch, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฒเบžเบฒเบเปƒเบ•เป‰เบŠเบทเปˆ เบ›เบฐเป€เบกเบตเบ™เบœเบปเบ™. เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบ™เบฒเบเบžเบฒเบชเบฒเปƒเปเปˆ, เบชเบฐเบ„เบฃเบดเบš เปเบฅเบฐเบกเบฒเป‚เบ„เบฃเป€เบฎเบฑเบ”เบงเบฝเบเป„เบงเบ‚เบถเป‰เบ™เบซเบผเบฒเบ. เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ”เบตเบšเบฑเบเปเบšเบšเป‚เบ•เป‰เบ•เบญเบšเปเบกเปˆเบ™เบฎเบญเบ‡เบฎเบฑเบš.
  • เบฅเบฐเบšเบปเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก (เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ) Hashlink - runtime เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เบ—เบตเปˆเบญเบญเบเปเบšเบšเบกเบฒเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบš Haxe, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฑเบš bytecode เบชเปเบฒเบฅเบฑเบš JIT เบซเบผเบท C, เบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ‡เปˆเบฒเบเบเบฑเบš C, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ›เบฐเป€เบžเบ”เบ•เบปเบงเป€เบฅเบเปเบฅเบฐเบ•เบปเบงเบŠเบตเป‰เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ.
  • เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ JVM เปƒเบซเบกเปˆ - เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡ jvm bytecode เป‚เบ”เบเบเบฒเบ™เบ‚เป‰เบฒเบกเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ” Java เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ—เบธเบ‡ "-D jvm" เป€เบกเบทเปˆเบญเบเปเบฒเบซเบ™เบปเบ”เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบ™ Java.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™ inline-deploy เปƒเบ™เบˆเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบท constructors, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”เบงเปˆเบฒเป€เบ›เบฑเบ™เป€เบŠเบฑเปˆเบ™เบ™เบฑเป‰เบ™.
  • เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบก เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบชเบฐเบ–เบดเบ” เป€เบกเบทเปˆเบญเบ›เบฐเบเบฒเบ”เบ›เบฐเป€เบžเบ” (เป€เบŠเบฑเปˆเบ™ "enum") เป‚เบ”เบเปƒเบŠเป‰ "@:using(path.ToExtension)".
  • เบ›เบฐเป€เบžเบ”เบšเบปเบ”เบ„เบฑเบ”เบซเบเปเป‰เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ "เบŠเบธเบ”" เบฎเบธเปˆเบ™เบ‚เบญเบ‡ "@:op(a.b)" เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบซเบผเบ” "obj.foo = bar" เบชเบฐเปเบ”เบ‡เบญเบญเบ.
  • เบ”เบฝเบงเบ™เบตเป‰ syntax "for" เบฎเบญเบ‡เบฎเบฑเบš key-value iteration: "for (key => value in collection) {}".
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบท xml เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ: โ€œvar a = โ€นhi/โ€บ;โ€. เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ parsing เบเบฑเบš macro เปเบฅเบฐเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบญเบญเบเปเบšเบš.
  • syntax เบชเปเบฒเบฅเบฑเบšเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™ "เป€เบ•เบฑเบก" notation เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆเปเบกเปˆเบ™: โ€œ{ var ?f:Int; }" (เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบชเบฑเป‰เบ™ "{?f:Int }").
  • เบ„เปˆเบฒ Enum เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™: "function fooโ€นTโ€บ(เบ—เบฒเบ‡เป€เบฅเบทเบญเบ: Optionโ€นTโ€บ = None)".
  • syntax "enum abstract Name(BasicType) {}" เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบณเบ™เบณเปœเป‰เบฒ "@:" เปƒเบ™ "enum".
  • เบเบฒเบ™เบ™เบฑเบšเป€เบฅเบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ™เบฑเบšเปเบšเบšเบซเบเปเป‰:

    enum abstract Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum เปเบ–เบš abstract (String) {
    var A; // "เบ"
    var B; // "เบ‚"
    }

  • เบ„เปเบฒเบซเบฅเบฑเบ "extern" เบšเปเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เปƒเบŠเป‰เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ "@:" เบญเบตเบเบ•เปเปˆเป„เบ›.
  • เบ–เบญเบ™เบ•เบปเบงเป€เบฅเบทเบญเบ "เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” เป„เบ”เบ™เบฒเบกเบดเบ" เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบœเปˆเบฒเบ™เบชเบฐเบ•เบฃเบดเบ‡. เบกเบตเปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เบžเบฒเบเบ™เบญเบเบซเบผเบทเบœเปˆเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™.
  • เป€เบžเบตเปˆเบก syntax "A & B" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เบเบฑเบ™เบ›เบฐเป€เบžเบ”, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เปƒเบŠเป‰เบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆเปเบฅเบฐเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ›เบฐเป€เบžเบ”. syntax เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เป€เบเบปเปˆเบฒเบ–เบทเบเบฅเบถเบšเบญเบญเบเปเบฅเป‰เบง.
  • เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡ "เปเบœเบ™เบ—เบตเปˆ" เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบœเปˆเบฒเบ™ syntax "var map:Mapโ€นInt, Stringโ€บ = [];" เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš array.
  • เป€เบžเบตเปˆเบกเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™ "haxe.ds.ReadOnlyArray".
  • เบ•เบญเบ™เบ™เบตเป‰ Metadata เบชเบฒเบกเบฒเบ”เบกเบต namespaces (โ€œ@:prefix.name function() {โ€ฆ}โ€). เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ„เปเบฒเบ™เบดเบเบฒเบก: "#if (some.flag ... #end".
  • เป‚เบ›เบฃเป‚เบ•เบ„เปเบšเปเบฅเบดเบเบฒเบ™เปƒเปเปˆเบชเบณเบฅเบฑเบš IDE เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ plugin เบชเปเบฒเบฅเบฑเบš VSCode.
  • เบญเบฑเบšเป€เบ”เบ”เบ„เปเบฒเบ™เบดเบเบฒเบกเบžเบฒเบเบ™เบญเบ (extern) เบชเปเบฒเบฅเบฑเบš Web APIs เปเบฅเบฐเป€เบžเบตเปˆเบกเบญเบฑเบ™เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™