Angular යෙදුම් ගොඩනැගෙන්නේ TypeScript මතයි. මෙම කොටසේදී, Angular සඳහා අවශ්ය වන TypeScript හි මූලික සංකල්ප ඉගෙන ගනිමු.
Types (වර්ග): TypeScript මගින් විචල්යයන් (variables) සඳහා නිශ්චිත වර්ගයක් (type) ලබා දීමට ඉඩ සලසයි. මෙය කේතයේ දෝෂ අඩු කිරීමට උපකාරී වේ.
let studentName: string = "නිමල්";
let age: number = 25;
let isRegistered: boolean = true;
Interfaces (අතුරුමුහුණත්): Interface එකක් යනු object එකක ව්යුහය (structure) නිර්වචනය කරන ගිවිසුමක් වැනිය.
interface User {
id: number;
name: string;
email?: string; // '?' means optional
}
let user: User = { id: 1, name: "කමලා" };
Classes (පන්ති): Classes යනු objects සෑදීම සඳහා වන සැකිලි (blueprints) වේ. ඒවාට properties (ගුණාංග) සහ methods (ක්රම) අඩංගු විය හැක.
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
const p = new Person("සුනිල්");
p.greet(); // "Hello, my name is සුනිල්"
Generics (ජෙනරික්ස්): විවිධ වර්ගයේ දත්ත සමඟ නැවත භාවිත කළ හැකි components සෑදීමට Generics ඉඩ සලසයි.
function getFirstElement<T>(arr: T[]): T {
return arr[0];
}
let firstNumber = getFirstElement([1, 2, 3]); // Type is number
let firstString = getFirstElement(["a", "b", "c"]); // Type is string
Decorators (ඩෙකරේටර්): Decorators යනු classes, methods, හෝ properties වලට අමතර ක්රියාකාරීත්වයක් එක් කරන විශේෂ functions වේ. Angular හි @Component, @Injectable වැනි Decorators බහුලව භාවිතා වේ.
// Example of a decorator (conceptual)
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent { ... }
Enums (එනුම්): Enum එකක් මගින් නමක් සහිත නියතයන් (named constants) සමූහයක් නිර්වචනය කළ හැක.
enum UserRole {
ADMIN,
EDITOR,
GUEST
}
let role: UserRole = UserRole.ADMIN;
Type Inference (වර්ග අනුමිතිය): ඔබ විචල්යයකට අගයක් ලබා දෙන විට, TypeScript හට එහි වර්ගය අනුමාන කළ හැක. එබැවින් සෑම විටම වර්ගය සඳහන් කිරීම අනිවාර්ය නොවේ.
let message = "Hello World"; // TypeScript knows this is a string
Optional Chaining (`?.`): Object එකක property එකක් null හෝ undefined විය හැකි නම්, දෝෂයක් ඇති නොවී එයට ආරක්ෂිතව පිවිසීමට මෙය භාවිතා කරයි.
const user = { name: "Saman" };
console.log(user.address?.street); // Returns undefined instead of an error