docs: Add ".ts" support in docs and configuration.

Add references to TypeScript in documentation where appropriate, such
as in example bash commands and discussions of the file structure.
Add a new section to the Reading List with TypeScript resources.
Also update `.editorconfig` to support ".ts" files.

Fix part of #12000.
This commit is contained in:
Marco Burstein 2019-03-28 12:55:05 -07:00 committed by Tim Abbott
parent ce7d2fde70
commit ae5496020b
9 changed files with 42 additions and 23 deletions

View File

@ -6,14 +6,14 @@ charset = utf-8
trim_trailing_whitespace = true trim_trailing_whitespace = true
insert_final_newline = true insert_final_newline = true
[*.{sh,py,pyi,js,json,yml,xml,css,md,markdown,handlebars,html}] [*.{sh,py,pyi,js,ts,json,yml,xml,css,md,markdown,handlebars,html}]
indent_style = space indent_style = space
indent_size = 4 indent_size = 4
[*.{py}] [*.{py}]
max_line_length = 110 max_line_length = 110
[*.{js}] [*.{js,ts}]
max_line_length = 120 max_line_length = 120
[*.{svg,rb,pp,pl}] [*.{svg,rb,pp,pl}]

View File

@ -107,8 +107,8 @@ on.
[#new members](https://chat.zulip.org/#narrow/stream/95-new-members) with a [#new members](https://chat.zulip.org/#narrow/stream/95-new-members) with a
bit about your background and interests, and we'll help you out. The most bit about your background and interests, and we'll help you out. The most
important thing to say is whether you're looking for a backend (Python), important thing to say is whether you're looking for a backend (Python),
frontend (JavaScript), mobile (React Native), desktop (Electron), frontend (JavaScript and TypeScript), mobile (React Native), desktop (Electron),
documentation (English) or visual design (JavaScript + CSS) issue, and a documentation (English) or visual design (JavaScript/TypeScript + CSS) issue, and a
bit about your programming experience and available time. bit about your programming experience and available time.
We also welcome suggestions of features that you feel would be valuable or We also welcome suggestions of features that you feel would be valuable or

View File

@ -145,7 +145,7 @@ string, use the `id` function, as it will simplify future code changes.
In most contexts in JavaScript where a string is needed, you can pass a In most contexts in JavaScript where a string is needed, you can pass a
number without any explicit conversion. number without any explicit conversion.
### JavaScript var ### JavaScript `var`
Always declare JavaScript variables using `var`. JavaScript has Always declare JavaScript variables using `var`. JavaScript has
function scope only, not block scope. This means that a `var` function scope only, not block scope. This means that a `var`
@ -153,7 +153,12 @@ declaration inside a `for` or `if` acts the same as a `var`
declaration at the beginning of the surrounding `function`. To avoid declaration at the beginning of the surrounding `function`. To avoid
confusion, declare all variables at the top of a function. confusion, declare all variables at the top of a function.
### JavaScript `for (i in myArray)` #### TypeScript `const` and `let`
When writing TypeScript, we prefer to use `const` or `let` where
possible.
### JavaScript and TypeScript `for (i in myArray)`
Don't use it: Don't use it:
[[1]](http://stackoverflow.com/questions/500504/javascript-for-in-with-arrays), [[1]](http://stackoverflow.com/questions/500504/javascript-for-in-with-arrays),
@ -164,7 +169,7 @@ Don't use it:
Remember to Remember to
[tag all user-facing strings for translation](../translating/translating.html), whether [tag all user-facing strings for translation](../translating/translating.html), whether
they are in HTML templates or JavaScript editing the HTML (e.g. error they are in HTML templates or JavaScript/TypeScript editing the HTML (e.g. error
messages). messages).
### State and logs files ### State and logs files
@ -212,7 +217,7 @@ we should still avoid extremely long lines. A general guideline is:
refactor stuff to get it under 85 characters, unless that makes the refactor stuff to get it under 85 characters, unless that makes the
code a lot uglier, in which case it's fine to go up to 120 or so. code a lot uglier, in which case it's fine to go up to 120 or so.
### JavaScript ### JavaScript and TypeScript
When calling a function with an anonymous function as an argument, use When calling a function with an anonymous function as an argument, use
this style: this style:

View File

@ -24,7 +24,7 @@ See also [fixing commits][fix-commit]
- `git fetch origin` - `git fetch origin`
- `git fetch upstream` - `git fetch upstream`
- grep - grep
- `git grep update_unread_counts -- '*.js'` - `git grep update_unread_counts
- log - log
- `git log` - `git log`
- pull - pull
@ -79,7 +79,7 @@ See also [fixing commits][fix-commit]
- `git fetch origin`: fetch origin repository - `git fetch origin`: fetch origin repository
- `git fetch upstream`: fetch upstream repository - `git fetch upstream`: fetch upstream repository
- grep - grep
- `git grep update_unread_counts -- '*.js'`: search all files (ending in `.js`) for `update_unread_counts` - `git grep update_unread_counts static/js`: Search our JS for references to update_unread_counts.
- log - log
- `git log`: show commit logs - `git log`: show commit logs
- `git log --oneline | head`: To quickly see the latest ten commits on a branch. - `git log --oneline | head`: To quickly see the latest ten commits on a branch.

View File

@ -52,9 +52,9 @@ templating systems.
---------------------------------------- ----------------------------------------
### JavaScript and other static assets ### JavaScript, TypeScript, and other static assets
* `static/js/` Zulip's own JavaScript. * `static/js/` Zulip's own JavaScript and TypeScript sources.
* `static/styles/` Zulip's own CSS. * `static/styles/` Zulip's own CSS.

View File

@ -3,7 +3,7 @@
## Overview ## Overview
Zulip does extensive linting of much of its source code, including Zulip does extensive linting of much of its source code, including
Python/JavaScript files, HTML templates (Django/handlebars), CSS files, Python/JavaScript/TypeScript files, HTML templates (Django/handlebars), CSS files,
JSON fixtures, Markdown documents, puppet manifests, and shell scripts. JSON fixtures, Markdown documents, puppet manifests, and shell scripts.
For some files we simply check for small things like trailing whitespace, For some files we simply check for small things like trailing whitespace,
@ -92,7 +92,7 @@ Most of our lint checks get performed by `./tools/lint`. These include the
following checks: following checks:
- Check Python code with pyflakes. - Check Python code with pyflakes.
- Check JavaScript code with eslint. - Check JavaScript and TypeScript code with eslint.
- Check Python code for custom Zulip rules. - Check Python code for custom Zulip rules.
- Check non-Python code for custom Zulip rules. - Check non-Python code for custom Zulip rules.
- Check puppet manifests with the puppet validator. - Check puppet manifests with the puppet validator.

View File

@ -1,8 +1,8 @@
# JavaScript unit tests # JavaScript/TypeScript unit tests
Our node-based JavaScript unit tests system is the preferred way to Our node-based unit tests system is the preferred way to test
test JavaScript code in Zulip. We prefer it over the JavaScript/TypeScript code in Zulip. We prefer it over the [Casper
[Casper black-box whole-app testing](../testing/testing-with-casper.html), black-box whole-app testing](../testing/testing-with-casper.html),
system since it is much (>100x) faster and also easier to do correctly system since it is much (>100x) faster and also easier to do correctly
than the Casper system. than the Casper system.

View File

@ -114,10 +114,10 @@ Realm setting, in `test_realm.py`).
### Frontend changes ### Frontend changes
**JavaScript:** Zulip's JavaScript is located in the directory **JavaScript/TypeScript:** Zulip's JavaScript and TypeScript sources are
`static/js/`. The exact files you may need to change depend on your located in the directory `static/js/`. The exact files you may need to change
feature. If you've added a new event that is sent to clients, be sure to depend on your feature. If you've added a new event that is sent to clients,
add a handler for it in `static/js/server_events_dispatch.js`. be sure to add a handler for it in `static/js/server_events_dispatch.js`.
**CSS:** The primary CSS file is `static/styles/zulip.css`. If your new **CSS:** The primary CSS file is `static/styles/zulip.css`. If your new
feature requires UI changes, you may need to add additional CSS to this feature requires UI changes, you may need to add additional CSS to this
@ -129,7 +129,7 @@ Handlebars templates located in `static/templates`. Templates are
precompiled as part of the build/deploy process. precompiled as part of the build/deploy process.
Zulip is fully internationalized, so when writing both HTML templates Zulip is fully internationalized, so when writing both HTML templates
or JavaScript code that generates user-facing strings, be sure to or JavaScript/TypeScript code that generates user-facing strings, be sure to
[tag those strings for translation](../translating/translating.html). [tag those strings for translation](../translating/translating.html).
**Testing:** There are two types of frontend tests: node-based unit **Testing:** There are two types of frontend tests: node-based unit

View File

@ -140,6 +140,20 @@ Some titles have been shortened for organizational purposes.
[TypeScript vs. CoffeeScript vs. ES6]: http://www.slideshare.net/NeilGreen1/type-script-vs-coffeescript-vs-es6 [TypeScript vs. CoffeeScript vs. ES6]: http://www.slideshare.net/NeilGreen1/type-script-vs-coffeescript-vs-es6
## TypeScript
*Tutorial* - [TypeScript handbook section on base types][typescript-handbook]
[typescript-handbook]: https://www.typescriptlang.org/docs/handbook/basic-types.html
*Book* - [TypeScript Deep Dive][]
[TypeScript Deep Dive]: https://basarat.gitbooks.io/typescript/
*Guide* - [TypeScript Declaration Files Introduction][]
[TypeScript Declaration Files Introduction]: https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html
## Git/Version Control Systems (VCS) ## Git/Version Control Systems (VCS)
You may want to take a look first at our [Git and GitHub guide][]. You may want to take a look first at our [Git and GitHub guide][].