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 āĻā§āϞā§āϰ āĻāĻžāĻāĻĒ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻžāĻŦā§ āĻŦāϞ⧠āĻĻā§ā§āĻž āϝāĻžā§āĨ¤