Базовые типы и создание своих типов

Создание переменной

let changeble
const notChangeble: number = 1
const notChangeble2: string[] = ['a', 'b', 'c', 'd']

notChangeble2 = ['test'] // Нельзя, но
notChangeble2.shift()    // можно

Объявление типа

// Простые
const isTest: boolean = false
const int: number = 1

const count: number = 44
const someFloat: number = 4.2
const someNum: number = 3e10

const message: string = 'Some String'

// Массивы
const numberArray: number[] = [1, 1, 2, 3, 4]
const numberArray2: Array<number> = [1, 1, 2, 3]  // Через Generic-запись

// Tuple — массив из разных типов данных
const contact = ['Test', 123]
const contact2: [string, number] = ['Test', 123]

// Any — любой тип, чтоб можно было переопределять тип переменной
let testAny: any = 42
testAny = 'Test'

// Возвращаем ничего
function sayMyName(name: string): void {
    console.log(name)
}
sayMyName('Test')

// Never — это тип, который указывает, что функция может не выполниться до конца 
// или никогда не завершится
function throwError(message: string): never {
    throw new Error(message)
}

function infinite(message: string): never {
    while(true) {}
}

Создание своих типов

// тип как элиас
type Login = string
const login: Login = 'admin'

// элиас для двух типов
type ID = string | number
const id1: ID = 1234
const id2: ID = '1234'

// тип null и undefined
type SomeType = string | null | undefined

// Тип-перечисление
type SomeTypeEnum = 'value1' | 'value2' | 'value3' 
const test: SomeTypeEnum = 'value2' // correct
const test2: SomeTypeEnum = 'value4'  // incorrect

// составной тип
type User = {
    _id: number
    name: string
    email: string
    createdAt: Date
}

Last updated