Interface dan Type
Sintaks Umum
Dalam TypeScript, interface mendefinisikan struktur objek dengan menentukan nama dan tipe properti atau metode yang harus dimiliki sebuah objek. Sintaks umum untuk mendefinisikan interface dalam TypeScript adalah sebagai berikut:
interface InterfaceName { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...}Demikian pula untuk definisi tipe:
type TypeName = { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...};interface InterfaceName atau type TypeName: Mendefinisikan nama interface.
property1: Type1: Menentukan properti interface beserta tipe yang sesuai. Beberapa properti dapat didefinisikan, masing-masing dipisahkan oleh titik koma.
method1(arg1: ArgType1, arg2: ArgType2): ReturnType;: Menentukan metode interface. Metode didefinisikan dengan namanya, diikuti daftar parameter dalam tanda kurung dan tipe kembalian. Beberapa metode dapat didefinisikan, masing-masing dipisahkan oleh titik koma.
Contoh interface:
interface Person { name: string; age: number; greet(): void;}Contoh type:
type TypeName = { property1: string; method1(arg1: string, arg2: string): string;};Dalam TypeScript, tipe digunakan untuk mendefinisikan bentuk data dan menerapkan pemeriksaan tipe. Ada beberapa sintaks umum untuk mendefinisikan tipe dalam TypeScript, bergantung pada kasus penggunaan tertentu. Berikut beberapa contohnya:
Tipe Dasar
let myNumber: number = 123; // number typelet myBoolean: boolean = true; // boolean typelet myArray: string[] = ['a', 'b']; // array of stringslet myTuple: [string, number] = ['a', 123]; // tupleObjek dan Interface
const x: { name: string; age: number } = { name: 'Simon', age: 7 };Tipe Union dan Intersection
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