typescript-youtube-cc
https://www.youtube.com/watch?v=nyIpDs2DJ_c&list=PLqKQF2ojwm3nW-cQeSER79xdpK3vL5c-g&index=3
Typescript crash course for youtube
определение annotations типов и предположение inference типов
- Обьекты можно делать через Object literals
const obj: {a: number: b: number} = {
a: 10,
b: 20
}
- Когда мы при объявлении переменной сразу присваиваем ей значение - указание типа можно опускать. Исключения:
- JSON:
let result: {x: string, y: string} = JSON.parse('{"x":"10","y":"20"}')
; - присваиваем значения позже
- мы присваиваем перееной один тип (true), а ему присваивается другой тип (number) http://joxi.ru/gmv1eDBSq3KR4r
- присваиваем массиву пустой массив -
const arr = []
;
-
Если в функции все аргументы жестко определены, не обезательно писать какой тип она возвартит, но лучше это делать
-
Деструктуризаия внутри аргументв ф-ции, если параметр - объект
const obj = {
a: 10,
b: 20
}
const logObjr = ({a, b} : {a: number: b: number}) : void => {console.log(a): console.log(b)};
- Деструктуризация с определением типов
const age: number = profile.age === const {age} : {age: number} = profile;
const {coords: {lat, lang}} : {coords: {lat: number, lang: number}} = profile;
-
При работе с массивами - ts знает какие типы внутри, поэтому при извлечении элемента из массива - он знает типа этого элемента (предложит нужные методы), и не даст добавить в массив элемент другого типа
-
определяем tuple -
type Drink = [string, boolean, number]
; -
в constructor класса можно передать аргумент, который передается при вызове инстанса.
constructor(public color: string) {...}
-
Интерфейс используется когда мы в параметры подаем разные классы, у которых есть общие свойства для валидации
-
Типизация Call function call<TS extends any[], R>(fn: (...args: TS) => R, ..args: TS): R { return fn(...args) }
-
Unknown - как и any, но не может быть переопределен при использовании в любой другой тип. Кроме как в any. Используется
-
Partial - повзоляет создать тип из другого типа, где все значения будут опциональными type1 = {a: b, c: d}, type2 = Partial = {a?: b, c?: d}}
-
- для полключения типов для библиотек полифиллов. Чтобы не конфликтовало с основнми definitions TS.
-
Omit - повзоляет создать тип из другого типа без определенных полей type1 = {a: b, c: d}, type2 = Omit<type1, 'a'> = {c: d}
-
Дектораторы - добвляют аннтоации.Применяются для св-в, методов, аргументов метода в класссах.