Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° njs ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΉ TypeScript
| ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΉ TypeScript ΠΡΠΎΠ²Π΅ΡΠΊΠ° API ΠΈ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ njs ΠΊΠΎΠ΄Π° |
TypeScriptΒ β ΡΡΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ JavaScript, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΎΠ±ΡΡΠ½ΡΠΉ JavaScript.
TypeScript ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ»Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ JavaScript. Π‘ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π°Ρ ΡΠ°ΠΊΠΆΠ΅, Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΡΡΠ½ΠΎΡΡΡΠΌΠΈ TypeScript.
Π njs ΡΠ°ΠΉΠ»Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΉ TypeScript ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π΄Π»Ρ API ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈ:
- Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ API Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ njs-ΠΊΠΎΠ΄Π°.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΉ TypeScript
$ git clone https://github.com/nginx/njs $ cd njs && ./configure && make ts $ ls build/ts/ njs_core.d.ts njs_shell.d.ts ngx_http_js_module.d.ts ngx_stream_js_module.d.ts
ΠΡΠΎΠ²Π΅ΡΠΊΠ° API ΠΈ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
Π€Π°ΠΉΠ»Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΉ *.d.ts Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΌΠ΅ΡΡΠΎ,
Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ:
test.js:
/// <reference path="ngx_http_js_module.d.ts" />
/**
* @param {NginxHTTPRequest} r
* */
function content_handler(r) {
r.headersOut['content-type'] = 'text/plain';
r.return(200, "Hello");
}
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ njs ΠΊΠΎΠ΄Π°
test.ts:
/// <reference path="ngx_http_js_module.d.ts" />
function content_handler(r: NginxHTTPRequest) {
r.headersOut['content-type'] = 'text/plain';
r.return(200, "Hello from TypeScript");
}
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° TypeScript:
# npm install -g typescript
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ TypeScript:
$ tsc test.ts $ cat test.js
Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» test.js ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Π² njs.