readme files

This commit is contained in:
Primakov Alexandr Alexandrovich 2024-11-15 18:47:32 +03:00
parent 6b64d09397
commit 1d2802f113
17 changed files with 107 additions and 49 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules/

35
03_more_options/Readme.md Normal file
View File

@ -0,0 +1,35 @@
# Другие настройки
Откройте файл **tsconfig.json**
## Настройка strict
- Запустите команду **tsc**
> Убедитесь что ошибок типизации нет
- Выставьте strict = true
- Повторите команду **tsc**
> В терминале должны появиться ошибки
![call error](../assets/03.png)
Подробнее [почитайте](https://www.typescriptlang.org/tsconfig/#strict) об этой настройке
2. Настройки **sourceMap** и **declaration**
```json
{
"compilerOptions": {
"declaration": true,
"sourceMap": true
}
}
```
* Обратите внимание какие файлы появляются в **dist** кроме **.js**
> Посмотрите что именно в них написано и откуда эта информация появляется

View File

@ -1,6 +1,7 @@
import { add } from './utils';
const a = 1;
const b = 2;
const b = "2";
const c = 3;
console.info(add(a, b));
console.info(add(a, parseInt(b)));
console.log(add.call(undefined, a, b));
//# sourceMappingURL=index.js.map

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,GAAW,CAAC,CAAC;AACpB,MAAM,CAAC,GAAW,CAAC,CAAC;AACpB,MAAM,CAAC,GAAG,CAAC,CAAC;AAEZ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,GAAG,CAAC,CAAC;AACZ,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,CAAC,CAAC;AAEZ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElC,OAAO,CAAC,GAAG,CACP,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAC5B,CAAA"}

View File

@ -1,7 +1,11 @@
import { add } from './utils';
const a: number = 1;
const b: number = 2;
const a = 1;
const b = "2";
const c = 3;
console.info(add(a, b))
console.info(add(a, parseInt(b)));
console.log(
add.call(undefined, a, b)
)

View File

@ -1,4 +1,4 @@
// @ts-check
// @ts-check-off
import { add } from './dist/utils'
add(1, '2')

28
04_lint/Readme.md Normal file
View File

@ -0,0 +1,28 @@
# Lint
Установите зависимости
```shell
npm ci
```
Запуустите команду проверки
```shell
npm run eslint
```
> Обратите внимание на ошибки в терминале
* Откройте файлы с ошибками и устраните их
> Обратите внимание что настройки eslint для javascript не всегда корректно работают с typeescript
![js eslint ignore problem](../assets/04.png)
> Поменяйте директиву на подходящую для **typeescript**
```
eslint-disable-next-line @typescript-eslint/no-unused-vars
```
> Ошибка ушла

View File

@ -5,4 +5,5 @@ const summ = (a, b) => {
return a + b;
}
// eslint-disable-next-line no-unused-vars
const boysAndGirls = summ(boys, girls);

View File

@ -3,7 +3,7 @@
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"lint": "eslint ."
},
"keywords": [],
"author": "",

25
05_error/Readme.md Normal file
View File

@ -0,0 +1,25 @@
# Ошибки
> Откройте [пример](./animals.ts)
* запустите typesscript
```shell
tsc
```
> Запустите полученный javascript файл
```shell
node ./animal.js
```
> Обратите внимание на ошибку при запуске
![ts error](../assets/05.png)
> Определите почему именно возникла ошибка
> Обратите внимание что typescript не указал на ошибку до runtime
[Полезные ссылки](./links.md)

View File

@ -1,40 +0,0 @@
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var Animal = /** @class */ (function () {
function Animal() {
}
return Animal;
}());
var Dog = /** @class */ (function (_super) {
__extends(Dog, _super);
function Dog() {
return _super !== null && _super.apply(this, arguments) || this;
}
Dog.prototype.bark = function () { };
return Dog;
}(Animal));
var Cat = /** @class */ (function (_super) {
__extends(Cat, _super);
function Cat() {
return _super !== null && _super.apply(this, arguments) || this;
}
Cat.prototype.meow = function () { };
return Cat;
}(Animal));
var cage1 = [new Dog(), new Dog()];
var cage2 = cage1; // ok
cage2.push(new Cat()); // ok
cage1.forEach(function (dog) { return dog.bark(); }); // ok

3
06_complex/Readme.md Normal file
View File

@ -0,0 +1,3 @@
# Разберите приведённые примеры
> обратите внимание как применяется infer

View File

@ -14,4 +14,4 @@ const double = (x: number, s: 'foo') => x * 2;
// get type of first argument of function
type GetFirstFuncArg<Arg> = Arg extends (a, x: infer T) => any ? T : never;
type DoubleArgType = GetFirstFuncArg<typeof double>
type DoubleArgType = GetFirstFuncArg<typeof double>

BIN
assets/03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
assets/04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
assets/05.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB