fix(guide): simplify directory structure

This commit is contained in:
Mrugesh Mohapatra
2018-10-16 21:26:13 +05:30
parent f989c28c52
commit da0df12ab7
35752 changed files with 0 additions and 317652 deletions

View File

@@ -0,0 +1,14 @@
---
title: Any Type
localeTitle: Любой тип
---
# Любой тип
Любой тип инструктирует Typcript приостанавливать проверку типов для указанных переменных. Полезно при работе с динамическим контентом, для которого вы не знаете тип, и для перехода вашей кодовой базы на Javascript на машинописный текст. Вы можете использовать неявный ввод Javascript с переменными, объявленными с типом Any.
```typescript
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;
```

View File

@@ -0,0 +1,60 @@
---
title: Array Type
localeTitle: Тип массива
---
# Тип массива
У вас есть полный доступ к массивам в TypeScript. Массивы могут быть написаны двумя разными способами в TypeScript:
**Тип данных\[\]**
DataType, за которым следуют квадратные скобки `[]`
```typescript
let names: string[] = ['Javier', 'Emma', 'John', 'Sophia', 'Emma'];
```
**Массив <DataType>**
`Array` за которым следует <DataType>
```typescript
let names: Array<string> = ['Javier', 'Emma', 'John', 'Sophia', 'Emma'];
```
## Встроенные методы
В типе Typecript Array вы можете использовать некоторые встроенные функции. Каждый тип имеет общие и уникальные методы. Ниже вы можете прочитать о наиболее используемых методах типа массива. В этом примере мы будем использовать объявление массива сверху.
### поп ()
Удаляет последний элемент из массива и возвращает его.
```typescript
var element = names.pop();
//element = Emma
var element2 = names.pop();
//element2 = Sophia
```
### От себя()
Добавляет один или несколько элементов в конец массива и возвращает с новой длиной массива.
```typescript
var length = names.push('Tobias');
// names[] = ['Javier', 'Emma', 'John', 'Sophia', 'Emma', 'Tobias']
// lenght = 6
var length2 = names.push('Jack','Lily');
// names[] = ['Javier', 'Emma', 'John', 'Sophia', 'Emma', 'Tobias','Jack','Lily']
// lenght2 = 8
```
### задний ход()
Изменяет порядок массива и возвращает его
```typescript
var reverseNames = names.reverse();
//reverseNames = ['Emma','Sophia','John','Emma','Javier']
```
[Дополнительные методы и описание в TutorialsPoint](https://www.tutorialspoint.com/typescript/typescript_arrays.htm)

View File

@@ -0,0 +1,12 @@
---
title: Boolean Type
localeTitle: Булевский тип
---
# Булевский тип
`boolean` - это ваше основное значение true / false JavaScript.
```typescript
let isDone: boolean = false;
```

View File

@@ -0,0 +1,29 @@
---
title: Enums
localeTitle: Перечисления
---
## Перечисления
Разработчики могут использовать `Enums` для определения набора именованных констант.
Существует два типа `Enums`
1. числовой
2. строка на основе
```typescript
// numeric enum
enum NumericEnum {
numeric1 = 1,
numeric2,
numeric3,
numeric4,
}
// string based enum
enum StringBasedEnum {
Programming = "is fun",
Pizza = "is good"
}
```

View File

@@ -0,0 +1,17 @@
---
title: For..Of Loop
localeTitle: Для ... Loop
---
# Для ... Loop
`for..of` loop - это специальный цикл в TypeScript, который вы можете использовать для повторения значений массива.
```typescript
let fruits = ['Apple', 'Banana', 'Orange'];
for (let fruit of fruits) {
console.log(fruit);
}
```
Результатом вывода из вышеприведенного кода будет «Apple», «Banana» и «Orange». Поскольку этот тип цикла не перебирает индексы, вы не получите «0», «1» и «2».

View File

@@ -0,0 +1,71 @@
---
title: Generics
localeTitle: Дженерики
---
## Дженерики
Разработчики могут использовать `Generics` для указания ограничений типов для классов, членов экземпляра, статических членов и функций.
### Что делают дженерики?
По сути, они служат заполнителями для типов, так что компонент может использоваться в разных местах вашего приложения путем размещения разных типов.
### Какая проблема решает?
Предположим, вы хотели убедиться, что входные и возвращаемые значения для функции имеют один и тот же тип, вот где появляются дженерики.
##### функции
```typescript
function printMessage(arg: any): any {
return arg;
}
// typescript won't complain because the argument type and return type aren't being typed properly
const myMessage: string = printMessage(1);
```
Как видно из вышеизложенного, передача `any` типа аргумента в функции, а также типа возврата не является идеальной, поскольку информация о типе теряется в процессе.
```typescript
// updated example
function printMessage<T>(arg: T): T {
return arg;
}
// typescript complains because the variable type and the return type of the function don't match
const myMessage: string = printMessage(1);
// resolve the issue by making sure both types match each other
const myMessage: number = printMessage(1);
```
Включение `<T>` с помощью функции сообщает TypeScript, что оно является общим, и передача этого в качестве ссылки заставит TypeScript знать, что связанные с ним значения имеют один и тот же тип.
##### Классы
```typescript
class Person {
fullName: string;
constructor(fullName: string) {
this.fullName = fullName;
}
getFullName() {
return 'My name is ' + this.fullName;
}
}
class Guest extends Person {};
let guest = new Guest('abc');
function getUser<T>(user: T): T {
return user;
}
// foo will be of type 'guest' because it's being passed in as the argument
const foo = getUser(guest);
```

View File

@@ -0,0 +1,27 @@
---
title: Getters & Setters
localeTitle: Getters & Setters
---
# Getters & Setters
Typcript также поддерживает свойство `get` и `set` . Get и Set Properties на самом деле называются Accessors. Аксессоры свойства содержат исполняемые операторы, связанные с получением (чтением) или установкой (записью) свойства. В объявлениях может быть указатель доступа или установить аксессуар или и то, и другое.
```typescript
class User {
private _fullName: string = '';
get fullName() {
return this._fullName;
}
set fullName(name) {
this._fullName = name;
}
}
let user = new User();
user.fullName = 'John Doe';
console.log(user.fullName);

View File

@@ -0,0 +1,59 @@
---
title: TypeScript
localeTitle: Машинопись
---
## Машинопись
### обзор
![Машинопись](https://i.imgur.com/uRLunzU.png)
Так что, как вы, скорее всего, знаете, JavaScript расширяет свой след каждый день, и это одновременно и потрясающее, и потрясающее, что вы можете делать с языком в наши дни.
Однако, поскольку более масштабные проекты начинают использовать JavaScript, процесс упрощения написания кода и более удобного обслуживания становится все труднее.
Это проблема, которую Microsoft рано узнала, и они придумали решение TypeScript и выпустили первую версию примерно 1 октября 2012 года.
Вы можете узнать больше о различиях синтаксиса в [`TypeScript`](./) > [`JavaScript vs TypeScript`](./javascript-vs-typescript) .
![Ключевая особенность](https://i.imgur.com/pZij95O.jpg)
По сути, TypeScript пытается помочь JavaScript достичь новых высот и стать очень масштабируемым и может выделяться следующими функциями:
* свободный и открытый язык программирования, разработанный и поддерживаемый Microsoft
* строгий синтаксический супер-набор JavaScript, который компилируется в обычный JavaScript
* упрощает разработку приложений большого масштаба, написанных на JavaScript
* расширяет JavaScript, добавляя статические типы, классы, модули, интерфейсы и дженерики
**🎉 FUN FACT** TypeScript исполнилось 5 лет 1 октября 2017 года.
### Версия
Последней стабильной версией является [TypeScript 3.1](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-1.html) .
### Монтаж
Подробнее об установке см. В разделе « [`TypeScript`](./) > « [`Installation`](./installation) .
### ЛИНТЕР
Чтобы узнать больше об использовании linter с TypeScript, проверьте [`TypeScript`](./) > [`Linter`](./linter) .
### Детская площадка
![Детская площадка](https://i.imgur.com/vlV7ZFr.png)
Если вы хотите попробовать TypeScript без его установки, посетите [Playground](http://www.typescriptlang.org/play/index.html) .
Игровая площадка имеет встроенное автоматическое завершение и возможность прямого просмотра испускаемого JavaScript.
### Другие источники
Подробнее об установке см. В [Приложении](./src/articles/typescript/appendix-installation/index.md) к [установке](./src/articles/typescript/appendix-installation/index.md) .
Если вам нужна только проверка типов и вы не хотите компилировать свою программу, прочитайте о [Flux](https://facebook.github.io/flux/) .
* [Быстрый старт](http://www.typescriptlang.org/samples/index.html)
* [Документация](http://www.typescriptlang.org/docs/home.html)
* [Исходный код](https://github.com/Microsoft/TypeScript)
* [TutorialsPoint](https://www.tutorialspoint.com/typescript/)

View File

@@ -0,0 +1,88 @@
---
title: Installation
localeTitle: Монтаж
---
## Монтаж
![Монтаж](https://i.imgur.com/9ILjA1q.jpg)
Чтобы начать работу, вам потребуются два компилятора TypeScript и редактор, который поддерживает TypeScript.
На приведенном выше [снимке](https://github.com/palantir/tslint) экрана я устанавливаю как компилятор, так и [TSLint](https://github.com/palantir/tslint) (который похож на [ESLint](https://eslint.org/) ), используя `npm` в интегрированном терминале [Visual Studio Code](https://code.visualstudio.com/) .
### Установка TypeScript
Эта команда установит пакет TypeScript в качестве зависимости в вашем проекте, используя [`npm`](https://www.npmjs.com/) который является популярным менеджером пакетов.
```bash
npm i typescript
```
римечание._ Существует [несколько опций](https://docs.npmjs.com/cli/install) , предоставляемых `npm` зависимости от того, где вы хотите установить TypeScript.
* `npm i -g typescript` для глобальной установки пакета TypeScript
* `npm i -D typescript` для установки пакета TypeScript в качестве зависимости dev
### TSLint
Посмотрите , как настроить параметры пылеобразования для Машинописи на [машинописи](./) > [ЛИНТЕРЕ](./linter) в **руководстве freeCodeCamp.**
### Компиляция одного файла с помощью JavaScript
```bash
tsc multiplication.ts
```
римечание._ Вы можете сконфигурировать этот процесс компиляции TypeScript в качестве настраиваемого сценария npm в вашем `package.json` . `package.json` .
### Параметры конфигурации
```bash
touch tsconfig.json
```
Также есть возможность создать файл [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) который указывает корневые файлы и параметры компилятора.
[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) файле [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) вы можете указать, что TypeScript должен скомпилироваться с ES5 вместо ES6.
### Быстрый пример
![умножение](https://i.imgur.com/V5nP3xj.jpg)
На скриншоте выше вы можете увидеть два файла - `multiplication.js` и `multiplication.ts` .
Эта программа просто распечатывает произведение двух чисел, которые я предварительно определил.
> `multiplication.ts`
```typescript
let a: number = 10;
let b: number = 2;
function showProduct(first: number, second: number): void {
console.info("Mathematical! The result is " + first * second + ".");
}
showProduct(a, b);
// Mathematical! The result is 20.
```
Как только я закончил создание `multiplication.ts` , я могу скомпилировать его на JavaScript с помощью команды `tsc` которая означает компиляцию типа TypeScript.
> `multiplication.js`
```javascript
var a = 10;
var b = 2;
function showProduct(first, second) {
console.info("Mathematical! The result is " + first * second + ".");
}
showProduct(a, b);
// Mathematical! The result is 20.
```
Bam - я просто скомпилировал TypeScript для JavaScript!

View File

@@ -0,0 +1,29 @@
---
title: Interfaces
localeTitle: Интерфейсы
---
# Интерфейсы
Одним из основных принципов TypeScript является то, что проверка типов фокусируется на форме, которую имеют значения. Это иногда называют «утиным набором» или «структурным подтипированием». В TypeScript `interfaces` заполняют роль именования этих типов и являются мощным способом определения контрактов внутри вашего кода, а также контрактов с кодом вне вашего проекта.
```typescript
interface User = {
firstName: string;
lastName: string;
}
function printUserInfo(user: User) {
console.log(user.firstName);
}
let myObj = {firstName: 'John', lastName: 'Doe'}
printUserInfo(myObj);
```
Интерфейсы могут содержать необязательные параметры
```typescript
interface User = {
email?: string;
}

View File

@@ -0,0 +1,19 @@
---
title: JavaScript vs TypeScript
localeTitle: JavaScript vs TypeScript
---
## JavaScript vs TypeScript
![Где Уолдо](https://i.imgur.com/DznuAou.jpg)
Итак, теперь, когда у нас есть общее представление о том, что такое TypeScript, давайте сыграем в быстрой игре **Where's Waldo** .
В приведенном выше скриншоте вы можете заметить различия между `JavaScript` и `TypeScript` в этой очень простой программе умножения, которая просто печатает продукт двух чисел, которые я предварительно определил.
### Каковы же эти различия? 🤔️
Они **типа** !
Таким образом, `JavaScript` имеет динамическую типизацию в том, что переменная, объявленная как число, может быть преобразована в строку, где, поскольку `TypeScript` имеет статическую типизацию, означает, что вы заранее объявляете, какое значение переменной будет удерживать переменная, и она не изменяется.
В этом файле `multiplication.ts` я объявляю, что все эти переменные являются числами, поэтому они не могут быть изменены на что-то еще.

View File

@@ -0,0 +1,24 @@
---
title: Linter
localeTitle: ЛИНТЕР
---
## ЛИНТЕР
![TSLint](https://2.bp.blogspot.com/-w7oeP1geosE/V82a740bTbI/AAAAAAAAAu4/-zJxZsmmH6garbdmUplX0n5Yz5zDsvcVQCLcB/s1600/tslint.png)
[ЛИНТЕР](https://www.wikiwand.com/en/Lint_(software) определяется как инструмент, который обнаруживает и помещает ошибки в языках программирования, включая стилистические ошибки.
Для TypeScript [TSLint](http://palantir.github.io/tslint) является наиболее популярной опцией [linter](http://palantir.github.io/tslint) .
TSLint - это расширяемый инструмент статического анализа, который проверяет код TypeScript для удобочитаемости, ремонтопригодности и функциональных ошибок.
Он широко поддерживается в современных редакторах и системах сборки и может быть настроен с помощью ваших собственных правил, конфигураций и форматировщиков.
### Установка TSLint
Эта команда будет глобально устанавливать пакет `TSLint` с помощью `npm` , популярного диспетчера пакетов.
```bash
npm i -g tslint
```

View File

@@ -0,0 +1,28 @@
---
title: Never Type
localeTitle: Никогда не вводите
---
# Никогда не вводите
Тип `never` представляет тип значений, которые никогда не возникают. Например, `never` является типом возврата для выражения функции или выражения функции стрелки, которое всегда выдает исключение или никогда не возвращается; Переменные также приобретают тип, который `never` сужается `any` охранниками `any` типа, которые никогда не могут быть правдой.
Тип `never` является подтипом и присваивается каждому типу; однако ни один из типов не является подтипом или не назначается `never` (кроме самого себя). Даже никто не может быть привязан к никогда.
```typescript
// Function returning never must have unreachable end point
function error(message: string): never {
throw new Error(message);
}
// Inferred return type is never
function fail() {
return error("Something failed");
}
// Function returning never must have unreachable end point
function infiniteLoop(): never {
while (true) {
}
}
```

View File

@@ -0,0 +1,21 @@
---
title: Null Type
localeTitle: Нулевой тип
---
## Нулевой тип
В TypeScript нулевой тип имеет значения null. Null - это допустимые значения для каждого типа.
```ts
let u: null = null;
```
При использовании -strictNullChecks флаг null присваивается только void и их типу.
```ts
let s = "foo";
s = null; // error, 'null' is not assignable to 'string'
let sn: string | null = "bar";
sn = null; // ok
```

View File

@@ -0,0 +1,15 @@
---
title: Number Type
localeTitle: Тип номера
---
# Тип номера
Все числа в TypeScript являются значениями с плавающей запятой. ТипScript поддерживает двоичные и восьмеричные значения букв от ES6.
```typescript
let decimal: number = 7;
let hex: number = 0xf00d;
let binary: number = 0b0110;
let octal: number = 0o531;
```

View File

@@ -0,0 +1,56 @@
---
title: String Type
localeTitle: Строковый тип
---
# Строковый тип
Строки могут быть записаны с помощью `''` одиночных кавычек» или `""` двойных кавычек». Соблюдайте свой код и выбирайте стиль.
```typescript
let dog: string = 'Fido';
let activity: string = "Playing Outside";
```
Строки могут быть написаны с использованием шаблонных литералов:
```typescript
let greeting: string = `Hello, ${firstName} ${lastName}, thank you for attending the ${eventName} event.`;
```
## Встроенные методы
В типе Typcript вы можете использовать некоторые встроенные функции. Каждый тип имеет общие и уникальные методы. Ниже вы можете прочитать о наиболее используемых методах типа string.
### split ('separator', limit)
С функцией split вы можете разделить строку на указанный разделитель. Вы можете установить предельное число, это говорит о том, сколько разделов нужно делать. Разделенная строка возвращается в виде массива.
```typescript
let names: string = 'Sarah,Lily,John,Paula,Harvey';
let array: string[] = names.split(',');
//array = ['Sarah','Lily','John','Paula','Harvey']
let array2: string[] = names.split(',',2);
//array2 = ['Sarah','Lily']
```
### зиЬзЬг (startAt, длина)
Этот метод возвращает с подстрокой, которая начинается с `startAt` символа, а длина - это `length` .
```typescript
let names: string = 'Harvey Specter';
let substr: string = names.substr(3,10);
//substr = 'rvey Spect'
```
### подстрока (startAt, ENDAT)
Этот метод похож на substr (), но имеет разные параметры. Второй параметр также является индексом исходной строки, а не номером длины.
```typescript
let names: string = 'Harvey Specter';
let substring: string = names.substring(3,10);
//substring = 'rvey Spe'
```
[Дополнительные методы и описание в TutorialsPoint](https://www.tutorialspoint.com/typescript/typescript_strings.htm)

View File

@@ -0,0 +1,71 @@
---
title: Tuple Type
localeTitle: Тип Tuple
---
# Тип Tuple
Выразите массив, в котором известно определенное количество элементов типов, но не одно и то же.
```typescript
let arr: [string, number];
// This is correct
arr = ['Hello', 7];
//This is incorrect
arr = [7, 'Hello'];
```
При доступе к элементу за пределами известных индексов он будет использовать тип объединения:
```typescript
arr[3] = 'World!'
// OK, 'string' can be assigned to 'string | number'
// Error, 'boolean' is not a 'string | number'
arr[5] = false;
// Error, 'boolean' is not a 'string | number'
```
## свойства
В типе машинописного текста вы можете иметь некоторые свойства для создания. Максимальная длина или некоторые другие уникальные типы.
### длина
Это свойство говорит, сколько элементов имеет элемент.
```typescript
let tuple = []; //you can initialize it after the declaration too, not just the method above
tuple[0] = 10;
tuple[1] = 'Mike';
let number = tuple.length;
//number = 2;
```
## Встроенные методы
В типе Typcript вы можете использовать некоторые встроенные функции. Каждый тип имеет общие и уникальные методы. Ниже вы можете прочитать о наиболее используемых методах типа tuple.
### поп ()
Удаляет последний элемент из кортежа.
```typescript
var tuple = [10,'Emma',11,'Lily',12,'Mike Ross'];
tuple.pop();
//tuple = [10,'Emma',11,'Lily',12,]
//We popped 'Mike Ross' from the tuple
```
### От себя()
Добавляет элемент в конец кортежа.
```typescript
var tuple = [10,'Emma',11,'Lily',12,'Mike Ross'];
tuple.push('Rachel Zane');
//tuple = [10,'Emma',11,'Lily',12,'Mike Ross','Rachel Zane']
```
[Дополнительная информация о кортежах на TutorialsPoint](https://www.tutorialspoint.com/typescript/typescript_tuples.htm)

View File

@@ -0,0 +1,35 @@
---
title: Undefined Type
localeTitle: Неопределенный тип
---
## Неопределенный тип
В TypeScript, том же с нулевым типом, неопределенный тип имеет значения undefined. Undefined - допустимые значения для каждого типа.
```ts
let u: undefined = undefined;
```
При использовании `--strictNullChecks` флага undefined `--strictNullChecks` только void и их типу.
```ts
let s = "foo";
s = null; // error, 'null' is not assignable to 'string'
let sn: string | null = "bar";
sn = null; // ok
sn = undefined; // error, 'undefined' is not assignable to 'string | null'
```
С помощью `--strictNullChecks` , дополнительный параметр автоматически добавляет `| undefined` :
```ts
function f(x: number, y?: number) {
return x + (y || 0);
}
f(1, 2);
f(1);
f(1, undefined);
f(1, null); // error, 'null' is not assignable to 'number | undefined'
```

View File

@@ -0,0 +1,15 @@
---
title: Void Type
localeTitle: Тип пустоты
---
# Тип пустоты
Не следует использовать для переменных, используйте `null` или `undefined` .
Однако используйте его для функций, которые не возвращают значение.
```typescript
const greeting(): void {
alert('Hello, and Welcome to My Webpage!');
}
```