Interface и Type
Общ синтаксис
В TypeScript, interface дефинират структурата на обекти, като задават имената и типовете на свойствата или методите, които даден обект трябва да има. Общият синтаксис за дефиниране на interface в TypeScript е следният:
interface InterfaceName { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...}По подобен начин се дефинира и type:
type TypeName = { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...};interface InterfaceName или type TypeName: Дефинира името на interface.
property1: Type1: Определя свойствата на interface заедно със съответните им типове. Могат да бъдат дефинирани множество свойства, разделени със точка и запетая.
method1(arg1: ArgType1, arg2: ArgType2): ReturnType;: Определя методите на interface. Методите се дефинират чрез име, последвано от списък с параметри в скоби и тип на върнатата стойност. Могат да бъдат дефинирани множество методи, разделени със точка и запетая.
Пример за interface:
interface Person { name: string; age: number; greet(): void;}Пример за type:
type TypeName = { property1: string; method1(arg1: string, arg2: string): string;};В TypeScript, типовете се използват за дефиниране на структурата на данни и за прилагане на проверка на типовете (type checking). Съществуват различни често използвани синтаксиси за дефиниране на типове в TypeScript, в зависимост от конкретния случай на употреба. Ето някои примери:
Основни типове
let myNumber: number = 123; // number типlet myBoolean: boolean = true; // boolean типlet myArray: string[] = ['a', 'b']; // масив от stringlet myTuple: [string, number] = ['a', 123]; // tupleОбекти и Interfaces
const x: { name: string; age: number } = { name: 'Simon', age: 7 };Union и Intersection типове
type MyType = string | number; // Union типlet myUnion: MyType = 'hello'; // Може да бъде stringmyUnion = 123; // Или number
type TypeA = { name: string };type TypeB = { age: number };type CombinedType = TypeA & TypeB; // Intersection типlet myCombined: CombinedType = { name: 'John', age: 25 }; // Обект със свойства name и age