Про Тайпскрипт
Типы указываются после имени переменной или перед {} для функций через двоеточие. Логика проста: именуем сущность и указываем, что возвращает.
Какие бывают типы:
- Примитивные: строки, целые числа, числа с запятой, булевы...
- Составные из нескольких примитивов: number | string
- Массивы, объекты и т.д.
- Кастомные (алиасы):
- Null и undefined
- функция при описании интерфейсов: ()
Интерфейсы
Это схематическое типирование обязательных и необязательных полей объекта. Пример:
Прочтем построчно поля объекта:
1. неизменяемое обязательное поле "столешница"
2. обязательное поле "ножки стола"
3. необязательное (знак вопроса перед двоеточием) поле "скатерть"
Присвоить интерфейс можно тремя способами:
Интерфейсы могут наследоваться:
Также можно описать сразу все типы полей объекта по ключу:
Типы указываются после имени переменной или перед {} для функций через двоеточие. Логика проста: именуем сущность и указываем, что возвращает.
Какие бывают типы:
- Примитивные: строки, целые числа, числа с запятой, булевы...
- Составные из нескольких примитивов: number | string
- Массивы, объекты и т.д.
- Кастомные (алиасы):
Login = string | undefined;
const login: Login = ...
- Для функций: любой примитив, либо Never (функция никогда не доходит до return), либо void (ничего не возвращает).- Null и undefined
- функция при описании интерфейсов: ()
Интерфейсы
Это схематическое типирование обязательных и необязательных полей объекта. Пример:
interface Table {
readonly countertop: boolean
tableLegs: number
tablecloth?: string
}
Далее интерфейс присваивается объекту, и тот может быть определен только по его схеме.Прочтем построчно поля объекта:
1. неизменяемое обязательное поле "столешница"
2. обязательное поле "ножки стола"
3. необязательное (знак вопроса перед двоеточием) поле "скатерть"
Присвоить интерфейс можно тремя способами:
- const obj: Interface = { ... }
(объект описывается)- const obj = {} as Interface;
(объект объявлен пустым)- const obj = <Interface>obj{}
(объект также пуст)Интерфейсы могут наследоваться:
interface Int2 extends Int1 {
...все поля Int1 под капотом...
getSum: () => number // обязательное поле-функция, возвращающее целое число
}
Также они могут описывать классы. Для этого используется ключевое слово implements:class Car implements ICar {
...обязательные поля класса...
}
Хорошая практика - называть интерфейсы с буквы I, как у Эпл, только с большой.Также можно описать сразу все типы полей объекта по ключу:
interface ICss = {
[key: string]: string...
}
#TypeScript