4.0 āĻā§āĻ¨ā§āĻ°āĻŋāĻā§āĻ¸
āĻā§āĻŦ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻŦāĻ˛āĻ¤ā§ āĻā§āĻ˛ā§ āĻā§āĻ¨ā§āĻ°āĻŋāĻā§āĻ¸ āĻšāĻā§āĻā§ āĻāĻžāĻāĻĒāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĢāĻŋāĻāĻžāĻ° āĻ¯āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ°āĻŋ-āĻāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻļāĻ¨, āĻā§āĻ˛āĻžāĻ¸, āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻ¸āĻš āĻā§āĻ āĻā§āĻ āĻā§āĻĄ āĻāĻŽā§āĻĒā§āĻ¨ā§āĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžā§, āĻ¯āĻž āĻāĻ˛āĻžāĻĻāĻž āĻāĻ˛āĻžāĻĻāĻž āĻĄāĻžāĻāĻžÂ āĻāĻžāĻāĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ āĻāĻ¨āĻ¸ā§āĻĒā§āĻ āĻāĻŋ āĻ¯ā§ āĻā§āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻāĻžāĻāĻĒāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°Â āĻšā§ āĻ¤āĻž āĻ¨ā§, C#, Java, Rust, Go āĻ¸āĻš āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯Â Strongly-Typed Language āĻāĻ āĻĢāĻŋāĻāĻžāĻ°āĻāĻŋ āĻ¸āĻžāĻĒā§āĻ°ā§āĻ āĻāĻ°ā§āĨ¤
4.1 āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨Â
āĻāĻāĻāĻŋ āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻžāĻāĻĒ āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛ āĻĄāĻŋāĻā§āĻ˛āĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻžāĻ°āĻŦāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°Â āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻā§āĻ¨ā§āĻ°āĻŋāĻā§āĻ¸ āĻāĻ° āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ Properties āĻ Usability āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻā§ āĻāĻŋāĻā§ āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ¯ā§āĻŽāĻ¨: āĻ°āĻŋ-āĻāĻāĻā§āĻŦāĻŋāĻ˛āĻŋāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻĒā§āĻāĻāĻŋ āĻā§āĻ¨ā§āĻ°āĻŋāĻā§āĻ¸-āĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§, āĻāĻžāĻāĻĒ āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛ āĻāĻŋ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻā§āĻ¨ āĻāĻ˛āĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤
āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦāĻŋāĻˇā§āĻā§āĻ˛ā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤Â
function identity(arg: number): number {
return arg;
}
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ identity āĻĢāĻžāĻāĻļāĻ¨ āĻ¯āĻž āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻā§āĻĄ āĻ āĻŦāĻžāĻ°āĻŦāĻžāĻ° āĻāĻ˛ āĻāĻ°āĻž āĻ¯āĻžāĻŦā§āĨ¤ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻā§āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻ¨āĻžāĻŽā§āĻŦāĻžāĻ° āĻāĻžāĻāĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ¯āĻžāĻ˛āĻŋāĻĄ āĻŦāĻž āĻāĻžāĻ°ā§āĻ¯āĻāĻ°āĨ¤ āĻ āĻ¨ā§āĻ¯ āĻā§āĻ¨ āĻāĻžāĻāĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻ¨ā§āĨ¤Â
āĻāĻāĻāĻŋ āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ° āĻŦāĻŋāĻļā§āĻˇāĻ¤ā§āĻŦ āĻāĻ āĻ¯ā§, āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻžāĻāĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻŦāĻ āĻ°āĻŋ-āĻāĻāĻā§āĻŦāĻ˛āĨ¤ āĻĢāĻžāĻāĻļāĻ¨ āĻŦāĻž āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽā§āĻ° āĻĒāĻ° āĻĻā§āĻāĻāĻŋ Angle Bracket <Â > āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻžāĻāĻĒ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻĄāĻŋāĻĢāĻžāĻāĻ¨ āĻāĻ°āĻž āĻ¯āĻžā§āĨ¤ āĻāĻāĻŋāĻā§ āĻāĻžāĻāĻĒ āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛āĻ āĻŦāĻ˛ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ:
function identity(arg: Type): T {
return arg;
}
āĻāĻāĻžāĻ¨ā§ āĻŦā§āĻ°ā§āĻ¯āĻžāĻā§āĻ āĻāĻ° āĻŽāĻžāĻā§ T āĻšāĻā§āĻā§ āĻāĻžāĻāĻĒ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŦāĻž āĻāĻžāĻāĻĒ āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛āĨ¤ āĻ āĻ°ā§āĻĨāĻžā§ āĻāĻžāĻāĻĒ āĻāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§ āĻĄāĻžāĻāĻž āĻāĻžāĻāĻĒ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§ āĻŦāĻ˛ā§ āĻĻā§ā§āĻž āĻ¯āĻžā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ:
let result1 = identity(2); āĨ¤* T is number *āĨ¤
let result2 = identity("Hello"); āĨ¤* T is string *āĨ¤
āĻāĻāĻžāĻ¨ā§ āĻĻā§āĻāĻž āĻ¯āĻžāĻā§āĻā§ āĻāĻžāĻāĻĒ āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛ā§Â āĻĄāĻŋāĻā§āĻ˛āĻžāĻ°ā§āĻļāĻ¨ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§Â identity āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻ¨āĻžāĻŽā§āĻŦāĻžāĻ° āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻāĻā§ āĻāĻžāĻāĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°Â āĻāĻ°āĻž āĻšā§ā§āĻā§āĨ¤ āĻāĻā§āĻāĻž, āĻ¤āĻŦā§ āĻāĻāĻāĻž āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĨā§āĻā§āĻ āĻ¯āĻžā§ āĻ¯ā§, āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§ any āĻāĻžāĻāĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°Â āĻāĻ°āĻžÂ āĻšā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻ¸ā§āĻāĻŋ āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻšāĻŦā§ āĻāĻŋ āĻ¨āĻž? āĻ¯ā§āĻšā§āĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻ¯ā§āĻā§āĻ¨ā§ āĻāĻžāĻāĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻŦāĻ āĻāĻŽā§āĻāĻžāĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨āĨ¤
any āĻāĻžāĻāĻĒ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĄāĻžāĻāĻžÂ āĻāĻžāĻāĻĒ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°āĻ˛ā§āĻ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻŋ āĻāĻžāĻāĻĒ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻŦā§ āĻ¸ā§āĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻŋ āĻ¨āĻž āĻŦāĻž āĻ¨āĻŋā§āĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻžāĨ¤ āĻāĻāĻŋ āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻāĻ¨ā§āĻ¸ā§āĻĒā§āĻ-āĻāĻ° āĻ¨āĻŋā§āĻŽ āĻ˛āĻā§āĻāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻ āĻāĻžāĻ°āĻŖā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§āĻ¨ āĻĢāĻžāĻāĻļāĻ¨ā§ any āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ˛ā§ āĻ¸ā§āĻāĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻžāĻāĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ°āĻŋ-āĻāĻāĻā§āĻŦāĻ˛ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻāĻŋ āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻā§āĻĄāĻŦā§āĻ āĻŽā§āĻāĻ¨ā§āĻā§āĻāĻ¨ā§āĻŦāĻŋāĻ˛āĻŋāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻā§āĻŦāĻ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤ āĻ¤āĻžāĻ āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻžāĻāĻĒ āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛ ( <T> ) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°Â āĻāĻ°āĻŋ āĻ¯āĻž āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛ā§āĻ° āĻŽāĻžāĻ¨ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻžāĻāĻĒā§āĻ° āĻāĻĒāĻ° āĻāĻžāĻ āĻāĻ°ā§āĨ¤Â Â
āĻ¤āĻŦā§ Array āĻāĻžāĻāĻĒā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻ˛āĻĻāĻžāĻāĻžāĻŦā§ [Â ] (āĻĨāĻžāĻ°ā§āĻĄ āĻŦā§āĻ°ā§āĻ¯āĻžāĻā§āĻ)Â āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻ¤ā§ āĻšā§āĨ¤ āĻ¯ā§āĻŽāĻ¨,
function identity(array: Type[]): Type[] {
console.log(array.length);
return array;
}
// An array of numbers
let numbers = [1, 2, 3];
// Call the generic function with number as the type parameter
let identityNumber = identity(numbers);
// An array of strings
let strings = ["a", "b", "c"];
// Call the generic function with string as the type parameter
let identityStrings = identity(strings);
āĻāĻžāĻ°āĻŖ Typescript āĻ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻšāĻā§āĻā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻĒā§āĻļāĻžāĻ˛ āĻĄāĻžāĻāĻžÂ āĻāĻžāĻāĻĒ āĻ¯āĻž āĻāĻā§āĻ° āĻ āĻ§āĻŋāĻ āĻā§āĻ¯āĻžāĻ˛ā§ āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻŋ numerical indexing āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°Â āĻāĻ°ā§āĨ¤ āĻāĻŦāĻžāĻ° āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻāĻžāĻŦā§āĻ āĻ˛ā§āĻāĻž āĻ¯āĻžā§:
function identity(arg: Array): Array {
console.log(arg.length);
return arg;
}
Array<Type> āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻŋāĻ° āĻŽāĻ§ā§āĻ¯āĻāĻžāĻ° Element āĻā§āĻ˛ā§āĻ° āĻāĻžāĻāĻĒ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻŦāĻ˛ā§ āĻĻā§ā§āĻž āĻ¯āĻžā§āĨ¤