TypeScript and JavaScript share some common types as both languages are designed to be compatible. However, TypeScript introduces additional features and concepts related to types that go beyond what is available in JavaScript. Here's a comparison between TypeScript types and JavaScript types:
-
Primitive Types:
-
JavaScript:
let num = 5; // Number let str = "Hello"; // String let bool = true; // Boolean
-
TypeScript:
let num: number = 5; let str: string = "Hello"; let bool: boolean = true;
-
-
Object:
-
JavaScript:
let obj = { key: "value" };
-
TypeScript:
let obj: { key: string } = { key: "value" };
-
-
Arrays:
-
JavaScript:
let arr = [1, 2, 3];
-
TypeScript:
let arr: number[] = [1, 2, 3];
-
-
Union Types:
-
TypeScript:
let value: number | string; value = 10; // Valid value = "Hello"; // Valid
-
-
Type Aliases:
-
TypeScript:
type Point = { x: number; y: number }; let p: Point = { x: 1, y: 2 };
-
-
Interfaces:
-
TypeScript:
interface Person { name: string; age: number; } let person: Person = { name: "John", age: 30 };
-
-
Enums:
-
TypeScript:
enum Color { Red, Green, Blue } let myColor: Color = Color.Green;
-
-
Function Types:
-
TypeScript:
type AddFunction = (a: number, b: number) => number; let add: AddFunction = (a, b) => a + b;
-
-
Generics:
-
TypeScript:
function identity<T>(arg: T): T { return arg; } let result: number = identity(10);
-
-
Nullable Types:
-
TypeScript:
let value: number | null = null;
-
-
Type Assertion:
-
TypeScript:
let variable: any = "Hello, TypeScript!"; let length: number = (variable as string).length;
-
-
Declaration Files (.d.ts):
-
TypeScript:
// example.d.ts declare module "example-library" { function myFunction(value: string): number; }
-
These additional TypeScript features provide more expressive power, enhance code readability, and catch errors during development, leading to more maintainable and robust codebases compared to JavaScript alone.