Mercurial > hg > nginx-site
comparison xml/ru/docs/njs/typescript.xml @ 2541:0e6bbd8138c4
Added article about TypeScript in njs.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Fri, 15 May 2020 16:22:43 +0100 |
parents | |
children | ff357b676c2e |
comparison
equal
deleted
inserted
replaced
2540:b686736680e3 | 2541:0e6bbd8138c4 |
---|---|
1 <?xml version="1.0"?> | |
2 | |
3 <!-- | |
4 Copyright (C) Nginx, Inc. | |
5 --> | |
6 | |
7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> | |
8 | |
9 <article name="Создание кода njs при помощи файлов деклараций TypeScript" | |
10 link="/en/docs/njs/typescript.html" | |
11 lang="en" | |
12 rev="1"> | |
13 | |
14 <section> | |
15 | |
16 <para> | |
17 <link url="https://www.typescriptlang.org">TypeScript</link>—это | |
18 типизированное подмножество JavaScript, | |
19 которое компилируется в обычный JavaScript. | |
20 </para> | |
21 | |
22 <para> | |
23 TypeScript поддерживает файлы деклараций, в которых содержится | |
24 типизированная информация существующих библиотек JavaScript. | |
25 С их помощью программы могут использовать значения в файлах также, | |
26 если бы эти значения были статически типизированными сущностями TypeScript. | |
27 </para> | |
28 | |
29 <para> | |
30 В njs файлы деклараций TypeScript предоставляются для | |
31 <link doc="reference.xml">API</link> и могут использоваться при: | |
32 <list type="bullet"> | |
33 | |
34 <listitem> | |
35 автозаполнении и проверки API в редакторе | |
36 </listitem> | |
37 | |
38 <listitem> | |
39 создании типобезопасного njs-кода. | |
40 </listitem> | |
41 | |
42 </list> | |
43 </para> | |
44 | |
45 </section> | |
46 | |
47 | |
48 <section id="get" name="Компиляция файлов деклараций TypeScript"> | |
49 | |
50 <para> | |
51 <example> | |
52 $ hg clone http://hg.nginx.org/njs | |
53 $ cd njs && ./configure && make ts | |
54 $ ls build/ts/ | |
55 njs_core.d.ts | |
56 njs_shell.d.ts | |
57 ngx_http_js_module.d.ts | |
58 ngx_stream_js_module.d.ts | |
59 </example> | |
60 </para> | |
61 | |
62 </section> | |
63 | |
64 | |
65 <section id="autocomplete" name="Проверка API и автозаполнение"> | |
66 | |
67 <para> | |
68 Файлы деклараций <literal>*.d.ts</literal> необходимо поместить в место, | |
69 доступное редактору: | |
70 </para> | |
71 | |
72 <para> | |
73 <literal>test.js</literal>: | |
74 <example> | |
75 /// <reference path="ngx_http_js_module.d.ts" /> | |
76 /** | |
77 * @param {NginxHTTPRequest} r | |
78 * */ | |
79 function content_handler(r) { | |
80 r.headersOut['content-type'] = 'text/plain'; | |
81 r.return(200, "Hello"); | |
82 } | |
83 </example> | |
84 </para> | |
85 | |
86 </section> | |
87 | |
88 | |
89 <section id="write" name="Создание типобезопасного njs кода"> | |
90 | |
91 <para> | |
92 <literal>test.ts</literal>: | |
93 <example> | |
94 /// <reference path="ngx_http_js_module.d.ts" /> | |
95 function content_handler(r: NginxHTTPRequest) { | |
96 r.headersOut['content-type'] = 'text/plain'; | |
97 r.return(200, "Hello from TypeScript"); | |
98 } | |
99 </example> | |
100 Установка TypeScript: | |
101 <example> | |
102 # npm install -g typescript | |
103 </example> | |
104 Компиляция TypeScript: | |
105 <example> | |
106 $ tsc test.ts | |
107 $ cat test.js | |
108 </example> | |
109 Созданный файл <literal>test.js</literal> может использоваться напрямую в njs. | |
110 </para> | |
111 | |
112 </section> | |
113 | |
114 </article> |