Примитивни типове
TypeScript поддържа 7 примитивни типа. Примитивният тип данни е тип, който не е обект и няма свързани с него методи. В TypeScript всички примитивни типове са неизменни, което означава, че стойностите им не могат да бъдат променяни, след като бъдат присвоени.
string
Примитивният тип string съхранява текстови данни, като стойността винаги се поставя в двойни или единични кавички.
const x: string = 'x';const y: string = 'y';Низовете могат да обхващат няколко реда, ако са обградени със символа обратна кавичка (`):
let sentence: string = `xxx, yyy`;boolean
Типът данни boolean в TypeScript съхранява двоична стойност, която може да бъде true или false.
const isReady: boolean = true;number
Типът данни number в TypeScript се представя като 64-битова стойност с плаваща запетая. Типът number може да представя цели числа и дроби.
TypeScript поддържа също шестнадесетични, двоични и осмични числа, например:
const decimal: number = 10;const hexadecimal: number = 0xa00d; // Шестнадесетичната система започва с 0xconst binary: number = 0b1010; // Двоичната система започва с 0bconst octal: number = 0o633; // Осмичната система започва с 0obigInt
bigInt представлява числови стойности, които са много големи (253 – 1) и не могат да бъдат представени с number.
bigInt може да бъде създаден чрез извикване на вградената функция BigInt() или чрез добавяне на n в края на всеки целочислен литерал:
const x: bigint = BigInt(9007199254740991);const y: bigint = 9007199254740991n;Забележки:
- Стойностите от тип
bigIntне могат да се смесват със стойности от типnumberи не могат да се използват с вградената библиотекаMath; те трябва да бъдат преобразувани към един и същ тип. - Стойностите от тип
bigIntса достъпни само ако целевата конфигурация е ES2020 или по-нова.
Символ
Символите са уникални идентификатори, които могат да се използват като ключове на свойства в обекти, за да се предотвратят конфликти при наименуване.
type Obj = { [sym: symbol]: number;};
const a = Symbol('a');const b = Symbol('b');let obj: Obj = {};obj[a] = 123;obj[b] = 456;
console.log(obj[a]); // 123console.log(obj[b]); // 456null и undefined
Типовете null и undefined представляват липса на стойност или отсъствие на каквато и да е стойност.
Типът undefined означава, че стойността не е присвоена или инициализирана, или показва непреднамерено отсъствие на стойност.
Типът null означава, че знаем, че полето няма стойност, така че стойността не е налична, което показва умишлено отсъствие на стойност.
Масив
array е тип данни, който може да съхранява множество стойности от един и същ тип или не. Той може да бъде дефиниран, като се използва следният синтаксис:
const x: string[] = ['a', 'b'];const y: Array<string> = ['a', 'b'];const j: Array<string | number> = ['a', 1, 'b', 2]; // UnionTypeScript поддържа readonly масиви чрез следния синтаксис:
const x: readonly string[] = ['a', 'b']; // Readonly модификаторconst y: ReadonlyArray<string> = ['a', 'b'];const j: ReadonlyArray<string | number> = ['a', 1, 'b', 2];j.push('x'); // НевалидноTypeScript поддържа tuple и readonly tuple:
const x: [string, number] = ['a', 1];const y: readonly [string, number] = ['a', 1];any
Типът any представлява буквално “всякаква” стойност и е стойността по подразбиране, когато TypeScript не може да изведе тип или когато такъв не е указан.
При използване на any TypeScript компилаторът пропуска проверката на типовете, което означава, че няма типова безопасност. По принцип не бива да се използва any, за да се заглуши компилаторът при възникване на грешка. Вместо това е по-добре грешката да бъде отстранена, тъй като чрез използването на any могат да се нарушат контрактите и се губят предимствата на TypeScript като autocomplete.
Типът any може да бъде полезен по време на постепенна миграция от JavaScript към TypeScript, тъй като може временно да заглуши компилатора.
При нови проекти използвайте TypeScript конфигурацията noImplicitAny, която позволява на TypeScript да генерира грешки, когато any се използва или бъде изведен автоматично.
Типът any често е източник на грешки, тъй като може да прикрие реални проблеми с типовете. Избягвайте използването му възможно най-много.