Интерфейс и тип
Общий синтаксис
В TypeScript интерфейсы определяют структуру объектов, задавая имена и типы свойств или методов, которые должен иметь объект. Общий синтаксис определения интерфейса в TypeScript выглядит следующим образом:
interface InterfaceName { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...}Аналогично для определения типа:
type TypeName = { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...};interface InterfaceName или type TypeName: определяет имя интерфейса.
property1: Type1: задаёт свойства интерфейса вместе с соответствующими типами. Можно определить несколько свойств, разделяя их точкой с запятой.
method1(arg1: ArgType1, arg2: ArgType2): ReturnType;: задаёт методы интерфейса. Метод определяется его именем, за которым следует список параметров в круглых скобках и тип возвращаемого значения. Можно определить несколько методов, разделяя их точкой с запятой.
Пример интерфейса:
interface Person { name: string; age: number; greet(): void;}Пример типа:
type TypeName = { property1: string; method1(arg1: string, arg2: string): string;};В TypeScript типы используются для определения структуры данных и обеспечения проверки типов. Существует несколько распространённых вариантов синтаксиса для определения типов в TypeScript в зависимости от конкретного сценария использования. Ниже приведены некоторые примеры:
Базовые типы
let myNumber: number = 123; // number typelet myBoolean: boolean = true; // boolean typelet myArray: string[] = ['a', 'b']; // array of stringslet myTuple: [string, number] = ['a', 123]; // tupleОбъекты и интерфейсы
const x: { name: string; age: number } = { name: 'Simon', age: 7 };Типы объединения и пересечения
type MyType = string | number; // Union typelet myUnion: MyType = 'hello'; // Can be a stringmyUnion = 123; // Or a number
type TypeA = { name: string };type TypeB = { age: number };type CombinedType = TypeA & TypeB; // Intersection typelet myCombined: CombinedType = { name: 'John', age: 25 }; // Object with both name and age properties