ಕನ್ನಡ

ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ವೇಷಿಸಿ, ಇದು ಕಟ್ಟುನಿಟ್ಟಾದ ಮೌಲ್ಯ ನಿರ್ಬಂಧಗಳನ್ನು ಜಾರಿಗೊಳಿಸಲು, ಕೋಡ್ ಸ್ಪಷ್ಟತೆಯನ್ನು ಸುಧಾರಿಸಲು ಮತ್ತು ದೋಷಗಳನ್ನು ತಡೆಯಲು ಒಂದು ಶಕ್ತಿಶಾಲಿ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ. ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ ಕಲಿಯಿರಿ.

ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್: ನಿಖರ ಮೌಲ್ಯದ ನಿರ್ಬಂಧಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವುದು

ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್, ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನ ಒಂದು ಸೂಪರ್‌ಸೆಟ್, ವೆಬ್ ಡೆವಲಪ್‌ಮೆಂಟ್‌ನ ಡೈನಾಮಿಕ್ ಜಗತ್ತಿಗೆ ಸ್ಟ್ಯಾಟಿಕ್ ಟೈಪಿಂಗ್ ಅನ್ನು ತರುತ್ತದೆ. ಇದರ ಅತ್ಯಂತ ಶಕ್ತಿಶಾಲಿ ವೈಶಿಷ್ಟ್ಯಗಳಲ್ಲಿ ಒಂದು ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಪರಿಕಲ್ಪನೆ. ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಒಂದು ವೇರಿಯಬಲ್ ಅಥವಾ ಪ್ರಾಪರ್ಟಿ ಹೊಂದಬಹುದಾದ ನಿಖರವಾದ ಮೌಲ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಇದು ವರ್ಧಿತ ಟೈಪ್ ಸುರಕ್ಷತೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಅನಿರೀಕ್ಷಿತ ದೋಷಗಳನ್ನು ತಡೆಯುತ್ತದೆ. ಈ ಲೇಖನವು ಲಿಟರಲ್ ಟೈಪ್‌ಗಳನ್ನು ಆಳವಾಗಿ ಅನ್ವೇಷಿಸುತ್ತದೆ, ಅವುಗಳ ಸಿಂಟ್ಯಾಕ್ಸ್, ಬಳಕೆ ಮತ್ತು ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ ಪ್ರಯೋಜನಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಎಂದರೇನು?

string, number, ಅಥವಾ boolean ನಂತಹ ಸಾಂಪ್ರದಾಯಿಕ ಟೈಪ್‌ಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಮೌಲ್ಯಗಳ ವಿಶಾಲ ವರ್ಗವನ್ನು ಪ್ರತಿನಿಧಿಸುವುದಿಲ್ಲ. ಬದಲಿಗೆ, ಅವು ನಿರ್ದಿಷ್ಟ, ಸ್ಥಿರ ಮೌಲ್ಯಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ. ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಮೂರು ರೀತಿಯ ಲಿಟರಲ್ ಟೈಪ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ:

ಲಿಟರಲ್ ಟೈಪ್‌ಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ, ನಿಮ್ಮ ಡೇಟಾದ ನೈಜ ನಿರ್ಬಂಧಗಳನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಹೆಚ್ಚು ನಿಖರವಾದ ಟೈಪ್ ವ್ಯಾಖ್ಯಾನಗಳನ್ನು ನೀವು ರಚಿಸಬಹುದು, ಇದು ಹೆಚ್ಚು ದೃಢವಾದ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲ ಕೋಡ್‌ಗೆ ಕಾರಣವಾಗುತ್ತದೆ.

ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್

ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅತ್ಯಂತ ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲಾಗುವ ಲಿಟರಲ್ ಟೈಪ್ ಆಗಿದೆ. ಪೂರ್ವನಿರ್ಧರಿತ ಸ್ಟ್ರಿಂಗ್ ಮೌಲ್ಯಗಳ ಗುಂಪಿನಲ್ಲಿ ಒಂದನ್ನು ಮಾತ್ರ ವೇರಿಯಬಲ್ ಅಥವಾ ಪ್ರಾಪರ್ಟಿ ಹೊಂದಬಹುದು ಎಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಅವು ನಿಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತವೆ.

ಮೂಲ ಸಿಂಟ್ಯಾಕ್ಸ್

ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಸಿಂಟ್ಯಾಕ್ಸ್ ನೇರವಾಗಿದೆ:


type AllowedValues = "value1" | "value2" | "value3";

ಇದು AllowedValues ಎಂಬ ಹೆಸರಿನ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಅದು "value1", "value2", ಅಥವಾ "value3" ಸ್ಟ್ರಿಂಗ್‌ಗಳನ್ನು ಮಾತ್ರ ಹೊಂದಬಹುದು.

ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು

1. ಬಣ್ಣದ ಪ್ಯಾಲೆಟ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು:

ನೀವು UI ಲೈಬ್ರರಿಯನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದೀರಿ ಮತ್ತು ಬಳಕೆದಾರರು ಪೂರ್ವನಿರ್ಧರಿತ ಪ್ಯಾಲೆಟ್‌ನಿಂದ ಮಾತ್ರ ಬಣ್ಣಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಬಯಸುತ್ತೀರಿ ಎಂದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ:


type Color = "red" | "green" | "blue" | "yellow";

function paintElement(element: HTMLElement, color: Color) {
  element.style.backgroundColor = color;
}

paintElement(document.getElementById("myElement")!, "red"); // ಮಾನ್ಯ
paintElement(document.getElementById("myElement")!, "purple"); // ದೋಷ: '"purple"' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ 'Color' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಈ ಉದಾಹರಣೆಯು ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಹೇಗೆ ಅನುಮತಿಸಲಾದ ಮೌಲ್ಯಗಳ ಕಟ್ಟುನಿಟ್ಟಾದ ಗುಂಪನ್ನು ಜಾರಿಗೊಳಿಸಬಹುದು ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಡೆವಲಪರ್‌ಗಳು ಅಮಾನ್ಯ ಬಣ್ಣಗಳನ್ನು ಬಳಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ.

2. API ಎಂಡ್‌ಪಾಯಿಂಟ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು:

API ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ನೀವು ಅನುಮತಿಸಲಾದ ಎಂಡ್‌ಪಾಯಿಂಟ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕಾಗುತ್ತದೆ. ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಇದನ್ನು ಜಾರಿಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ:


type APIEndpoint = "/users" | "/posts" | "/comments";

function fetchData(endpoint: APIEndpoint) {
  // ... ನಿರ್ದಿಷ್ಟ ಎಂಡ್‌ಪಾಯಿಂಟ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಪಡೆಯಲು ಇಂಪ್ಲಿಮೆಂಟೇಶನ್
  console.log(`Fetching data from ${endpoint}`);
}

fetchData("/users"); // ಮಾನ್ಯ
fetchData("/products"); // ದೋಷ: '"/products"' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ 'APIEndpoint' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಈ ಉದಾಹರಣೆಯು fetchData ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾನ್ಯ API ಎಂಡ್‌ಪಾಯಿಂಟ್‌ಗಳೊಂದಿಗೆ ಮಾತ್ರ ಕರೆಯಬಹುದೆಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಟೈಪೊಗಳು ಅಥವಾ ತಪ್ಪಾದ ಎಂಡ್‌ಪಾಯಿಂಟ್ ಹೆಸರುಗಳಿಂದ ಉಂಟಾಗುವ ದೋಷಗಳ ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

3. ವಿವಿಧ ಭಾಷೆಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು (ಅಂತರರಾಷ್ಟ್ರೀಕರಣ - i18n):

ಜಾಗತಿಕ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ, ನೀವು ವಿವಿಧ ಭಾಷೆಗಳನ್ನು ನಿರ್ವಹಿಸಬೇಕಾಗಬಹುದು. ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಭಾಷೆಗಳನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನೀವು ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಬಳಸಬಹುದು:


type Language = "en" | "es" | "fr" | "de" | "zh";

function translate(text: string, language: Language): string {
  // ... ಪಠ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟ ಭಾಷೆಗೆ ಭಾಷಾಂತರಿಸಲು ಇಂಪ್ಲಿಮೆಂಟೇಶನ್
  console.log(`Translating '${text}' to ${language}`);
  return "Translated text"; // ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್
}

translate("Hello", "en"); // ಮಾನ್ಯ
translate("Hello", "ja"); // ದೋಷ: '"ja"' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ 'Language' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಬೆಂಬಲಿತ ಭಾಷೆಗಳನ್ನು ಮಾತ್ರ ಬಳಸಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಹೇಗೆ ಎಂಬುದನ್ನು ಈ ಉದಾಹರಣೆಯು ತೋರಿಸುತ್ತದೆ.

ನಂಬರ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್

ನಂಬರ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಒಂದು ವೇರಿಯಬಲ್ ಅಥವಾ ಪ್ರಾಪರ್ಟಿ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವನ್ನು ಮಾತ್ರ ಹೊಂದಬಹುದು ಎಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಮೂಲ ಸಿಂಟ್ಯಾಕ್ಸ್

ನಂಬರ್ ಲಿಟರಲ್ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಸಿಂಟ್ಯಾಕ್ಸ್ ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್‌ನಂತೆಯೇ ಇರುತ್ತದೆ:


type StatusCode = 200 | 404 | 500;

ಇದು StatusCode ಎಂಬ ಹೆಸರಿನ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಅದು 200, 404, ಅಥವಾ 500 ಸಂಖ್ಯೆಗಳನ್ನು ಮಾತ್ರ ಹೊಂದಬಹುದು.

ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು

1. HTTP ಸ್ಟೇಟಸ್ ಕೋಡ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು:

HTTP ಸ್ಟೇಟಸ್ ಕೋಡ್‌ಗಳನ್ನು ಪ್ರತಿನಿಧಿಸಲು ನೀವು ನಂಬರ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಬಳಸಬಹುದು, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಮಾನ್ಯ ಕೋಡ್‌ಗಳನ್ನು ಮಾತ್ರ ಬಳಸಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು:


type HTTPStatus = 200 | 400 | 401 | 403 | 404 | 500;

function handleResponse(status: HTTPStatus) {
  switch (status) {
    case 200:
      console.log("Success!");
      break;
    case 400:
      console.log("Bad Request");
      break;
    // ... ಇತರ ಪ್ರಕರಣಗಳು
    default:
      console.log("Unknown Status");
  }
}

handleResponse(200); // ಮಾನ್ಯ
handleResponse(600); // ದೋಷ: '600' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ 'HTTPStatus' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಈ ಉದಾಹರಣೆಯು ಮಾನ್ಯ HTTP ಸ್ಟೇಟಸ್ ಕೋಡ್‌ಗಳ ಬಳಕೆಯನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ, ತಪ್ಪಾದ ಅಥವಾ ಪ್ರಮಾಣಿತವಲ್ಲದ ಕೋಡ್‌ಗಳನ್ನು ಬಳಸುವುದರಿಂದ ಉಂಟಾಗುವ ದೋಷಗಳನ್ನು ತಡೆಯುತ್ತದೆ.

2. ಸ್ಥಿರ ಆಯ್ಕೆಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುವುದು:

ಕಾನ್ಫಿಗರೇಶನ್ ಆಬ್ಜೆಕ್ಟ್‌ನಲ್ಲಿ ಸ್ಥಿರ ಆಯ್ಕೆಗಳನ್ನು ಪ್ರತಿನಿಧಿಸಲು ನೀವು ನಂಬರ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಬಳಸಬಹುದು:


type RetryAttempts = 1 | 3 | 5;

interface Config {
  retryAttempts: RetryAttempts;
}

const config1: Config = { retryAttempts: 3 }; // ಮಾನ್ಯ
const config2: Config = { retryAttempts: 7 }; // ದೋಷ: '{ retryAttempts: 7; }' ಮಾದರಿಯು 'Config' ಮಾದರಿಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಈ ಉದಾಹರಣೆಯು retryAttempts ಗಾಗಿ ಸಂಭವನೀಯ ಮೌಲ್ಯಗಳನ್ನು ನಿರ್ದಿಷ್ಟ ಗುಂಪಿಗೆ ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ, ನಿಮ್ಮ ಕಾನ್ಫಿಗರೇಶನ್‌ನ ಸ್ಪಷ್ಟತೆ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.

ಬೂಲಿಯನ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್

ಬೂಲಿಯನ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ನಿರ್ದಿಷ್ಟ true ಅಥವಾ false ಮೌಲ್ಯಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ. ಅವು ಸ್ಟ್ರಿಂಗ್ ಅಥವಾ ನಂಬರ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್‌ಗಿಂತ ಕಡಿಮೆ ಬಹುಮುಖವಾಗಿ ಕಾಣಿಸಬಹುದು, ಆದರೆ ಅವು ನಿರ್ದಿಷ್ಟ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಉಪಯುಕ್ತವಾಗಬಹುದು.

ಮೂಲ ಸಿಂಟ್ಯಾಕ್ಸ್

ಬೂಲಿಯನ್ ಲಿಟರಲ್ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಸಿಂಟ್ಯಾಕ್ಸ್:


type IsEnabled = true | false;

ಆದಾಗ್ಯೂ, ನೇರವಾಗಿ true | false ಅನ್ನು ಬಳಸುವುದು ಅನಗತ್ಯವಾಗಿದೆ ಏಕೆಂದರೆ ಅದು boolean ಟೈಪ್‌ಗೆ ಸಮನಾಗಿರುತ್ತದೆ. ಬೂಲಿಯನ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಇತರ ಟೈಪ್‌ಗಳೊಂದಿಗೆ ಅಥವಾ ಕಂಡೀಷನಲ್ ಟೈಪ್ಸ್‌ನಲ್ಲಿ ಸಂಯೋಜಿಸಿದಾಗ ಹೆಚ್ಚು ಉಪಯುಕ್ತವಾಗಿವೆ.

ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು

1. ಕಾನ್ಫಿಗರೇಶನ್‌ನೊಂದಿಗೆ ಕಂಡೀಷನಲ್ ಲಾಜಿಕ್:

ಕಾನ್ಫಿಗರೇಶನ್ ಫ್ಲ್ಯಾಗ್ ಆಧಾರದ ಮೇಲೆ ಫಂಕ್ಷನ್‌ನ ವರ್ತನೆಯನ್ನು ನಿಯಂತ್ರಿಸಲು ನೀವು ಬೂಲಿಯನ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಬಳಸಬಹುದು:


interface FeatureFlags {
  darkMode: boolean;
  newUserFlow: boolean;
}

function initializeApp(flags: FeatureFlags) {
  if (flags.darkMode) {
    // ಡಾರ್ಕ್ ಮೋಡ್ ಸಕ್ರಿಯಗೊಳಿಸಿ
    console.log("Enabling dark mode...");
  } else {
    // ಲೈಟ್ ಮೋಡ್ ಬಳಸಿ
    console.log("Using light mode...");
  }

  if (flags.newUserFlow) {
    // ಹೊಸ ಬಳಕೆದಾರ ಫ್ಲೋ ಸಕ್ರಿಯಗೊಳಿಸಿ
    console.log("Enabling new user flow...");
  } else {
    // ಹಳೆಯ ಬಳಕೆದಾರ ಫ್ಲೋ ಬಳಸಿ
    console.log("Using old user flow...");
  }
}

initializeApp({ darkMode: true, newUserFlow: false });

ಈ ಉದಾಹರಣೆಯು ಸ್ಟ್ಯಾಂಡರ್ಡ್ boolean ಟೈಪ್ ಅನ್ನು ಬಳಸಿದರೂ, ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ವರ್ತನೆಯನ್ನು ರಚಿಸಲು ನೀವು ಇದನ್ನು ಕಂಡೀಷನಲ್ ಟೈಪ್ಸ್ (ನಂತರ ವಿವರಿಸಲಾಗಿದೆ) ಜೊತೆಗೆ ಸಂಯೋಜಿಸಬಹುದು.

2. ಡಿಸ್ಕ್ರಿಮಿನೇಟೆಡ್ ಯೂನಿಯನ್ಸ್:

ಬೂಲಿಯನ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಯೂನಿಯನ್ ಟೈಪ್ಸ್‌ನಲ್ಲಿ ಡಿಸ್ಕ್ರಿಮಿನೇಟರ್‌ಗಳಾಗಿ ಬಳಸಬಹುದು. ಕೆಳಗಿನ ಉದಾಹರಣೆಯನ್ನು ಪರಿಗಣಿಸಿ:


interface SuccessResult {
  success: true;
  data: any;
}

interface ErrorResult {
  success: false;
  error: string;
}

type Result = SuccessResult | ErrorResult;

function processResult(result: Result) {
  if (result.success) {
    console.log("Success:", result.data);
  } else {
    console.error("Error:", result.error);
  }
}

processResult({ success: true, data: { name: "John" } });
processResult({ success: false, error: "Failed to fetch data" });

ಇಲ್ಲಿ, success ಪ್ರಾಪರ್ಟಿ, ಇದು ಬೂಲಿಯನ್ ಲಿಟರಲ್ ಟೈಪ್ ಆಗಿದೆ, ಡಿಸ್ಕ್ರಿಮಿನೇಟರ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, if ಸ್ಟೇಟ್‌ಮೆಂಟ್‌ನೊಳಗೆ result ನ ಟೈಪ್ ಅನ್ನು ಕಿರಿದಾಗಿಸಲು ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಯೂನಿಯನ್ ಟೈಪ್ಸ್‌ನೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು

ಯೂನಿಯನ್ ಟೈಪ್ಸ್ (| ಆಪರೇಟರ್ ಬಳಸಿ) ಜೊತೆ ಸಂಯೋಜಿಸಿದಾಗ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅತ್ಯಂತ ಶಕ್ತಿಯುತವಾಗಿರುತ್ತವೆ. ಇದು ಹಲವಾರು ನಿರ್ದಿಷ್ಟ ಮೌಲ್ಯಗಳಲ್ಲಿ ಒಂದನ್ನು ಹೊಂದಬಲ್ಲ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು

1. ಸ್ಟೇಟಸ್ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು:


type Status = "pending" | "in progress" | "completed" | "failed";

interface Task {
  id: number;
  description: string;
  status: Status;
}

const task1: Task = { id: 1, description: "Implement login", status: "in progress" }; // ಮಾನ್ಯ
const task2: Task = { id: 2, description: "Implement logout", status: "done" };       // ದೋಷ: '{ id: number; description: string; status: string; }' ಮಾದರಿಯು 'Task' ಮಾದರಿಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಈ ಉದಾಹರಣೆಯು Task ಆಬ್ಜೆಕ್ಟ್‌ಗಾಗಿ ಅನುಮತಿಸಲಾದ ಸ್ಟೇಟಸ್ ಮೌಲ್ಯಗಳ ನಿರ್ದಿಷ್ಟ ಗುಂಪನ್ನು ಹೇಗೆ ಜಾರಿಗೊಳಿಸುವುದು ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ.

2. ಸಾಧನದ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು:

ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ, ನೀವು ವಿವಿಧ ಸಾಧನಗಳ ಟೈಪ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಬೇಕಾಗಬಹುದು. ಇವುಗಳನ್ನು ಪ್ರತಿನಿಧಿಸಲು ನೀವು ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್‌ನ ಯೂನಿಯನ್ ಅನ್ನು ಬಳಸಬಹುದು:


type DeviceType = "mobile" | "tablet" | "desktop";

function logDeviceType(device: DeviceType) {
  console.log(`Device type: ${device}`);
}

logDeviceType("mobile"); // ಮಾನ್ಯ
logDeviceType("smartwatch"); // ದೋಷ: '"smartwatch"' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ 'DeviceType' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಈ ಉದಾಹರಣೆಯು logDeviceType ಫಂಕ್ಷನ್ ಅನ್ನು ಮಾನ್ಯ ಸಾಧನದ ಟೈಪ್‌ಗಳೊಂದಿಗೆ ಮಾತ್ರ ಕರೆಯಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.

ಟೈಪ್ ಅಲಿಯಾಸಸ್‌ನೊಂದಿಗೆ ಲಿಟರಲ್ ಟೈಪ್ಸ್

ಟೈಪ್ ಅಲಿಯಾಸಸ್ (type ಕೀವರ್ಡ್ ಬಳಸಿ) ಲಿಟರಲ್ ಟೈಪ್‌ಗೆ ಹೆಸರನ್ನು ನೀಡಲು ಒಂದು ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ, ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಹೆಚ್ಚು ಓದಬಲ್ಲ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲದಾಗಿಸುತ್ತದೆ.

ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು

1. ಕರೆನ್ಸಿ ಕೋಡ್ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು:


type CurrencyCode = "USD" | "EUR" | "GBP" | "JPY";

function formatCurrency(amount: number, currency: CurrencyCode): string {
  // ... ಕರೆನ್ಸಿ ಕೋಡ್ ಆಧಾರದ ಮೇಲೆ ಮೊತ್ತವನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲು ಇಂಪ್ಲಿಮೆಂಟೇಶನ್
  console.log(`Formatting ${amount} in ${currency}`);
  return "Formatted amount"; // ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್
}

formatCurrency(100, "USD"); // ಮಾನ್ಯ
formatCurrency(200, "CAD"); // ದೋಷ: '"CAD"' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ 'CurrencyCode' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಈ ಉದಾಹರಣೆಯು ಕರೆನ್ಸಿ ಕೋಡ್‌ಗಳ ಗುಂಪಿಗೆ CurrencyCode ಟೈಪ್ ಅಲಿಯಾಸ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಇದು formatCurrency ಫಂಕ್ಷನ್‌ನ ಓದುವಿಕೆಯನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.

2. ವಾರದ ದಿನದ ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು:


type DayOfWeek = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday" | "Sunday";

function isWeekend(day: DayOfWeek): boolean {
  return day === "Saturday" || day === "Sunday";
}

console.log(isWeekend("Monday"));   // false
console.log(isWeekend("Saturday")); // true
console.log(isWeekend("Funday"));   // ದೋಷ: '"Funday"' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ 'DayOfWeek' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಲಿಟರಲ್ ಇನ್‌ಫರೆನ್ಸ್

ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ ನೀವು ವೇರಿಯಬಲ್‌ಗಳಿಗೆ ನಿಯೋಜಿಸುವ ಮೌಲ್ಯಗಳ ಆಧಾರದ ಮೇಲೆ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಊಹಿಸಬಹುದು. const ವೇರಿಯಬಲ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಇದು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.

ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು

1. ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಊಹಿಸುವುದು:


const apiKey = "your-api-key"; // ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ apiKey ನ ಟೈಪ್ ಅನ್ನು "your-api-key" ಎಂದು ಊಹಿಸುತ್ತದೆ

function validateApiKey(key: "your-api-key") {
  return key === "your-api-key";
}

console.log(validateApiKey(apiKey)); // true

const anotherKey = "invalid-key";
console.log(validateApiKey(anotherKey)); // ದೋಷ: 'string' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ '"your-api-key"' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ apiKey ನ ಟೈಪ್ ಅನ್ನು ಸ್ಟ್ರಿಂಗ್ ಲಿಟರಲ್ ಟೈಪ್ "your-api-key" ಎಂದು ಊಹಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನೀವು ವೇರಿಯಬಲ್‌ಗೆ ಸ್ಥಿರವಲ್ಲದ ಮೌಲ್ಯವನ್ನು ನಿಯೋಜಿಸಿದರೆ, ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಸಾಮಾನ್ಯವಾಗಿ ವಿಶಾಲವಾದ string ಟೈಪ್ ಅನ್ನು ಊಹಿಸುತ್ತದೆ.

2. ನಂಬರ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಊಹಿಸುವುದು:


const port = 8080; // ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ port ನ ಟೈಪ್ ಅನ್ನು 8080 ಎಂದು ಊಹಿಸುತ್ತದೆ

function startServer(portNumber: 8080) {
  console.log(`Starting server on port ${portNumber}`);
}

startServer(port); // ಮಾನ್ಯ

const anotherPort = 3000;
startServer(anotherPort); // ದೋಷ: 'number' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ '8080' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಕಂಡೀಷನಲ್ ಟೈಪ್ಸ್‌ನೊಂದಿಗೆ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಬಳಸುವುದು

ಕಂಡೀಷನಲ್ ಟೈಪ್ಸ್‌ನೊಂದಿಗೆ ಸಂಯೋಜಿಸಿದಾಗ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಇನ್ನಷ್ಟು ಶಕ್ತಿಯುತವಾಗುತ್ತವೆ. ಕಂಡೀಷನಲ್ ಟೈಪ್ಸ್ ಇತರ ಟೈಪ್ಸ್ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುವ ಟೈಪ್ಸ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಇದು ಅತ್ಯಂತ ಹೊಂದಿಕೊಳ್ಳುವ ಮತ್ತು ಅಭಿವ್ಯಕ್ತಿಶೀಲ ಟೈಪ್ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ರಚಿಸುತ್ತದೆ.

ಮೂಲ ಸಿಂಟ್ಯಾಕ್ಸ್

ಕಂಡೀಷನಲ್ ಟೈಪ್‌ನ ಸಿಂಟ್ಯಾಕ್ಸ್:


TypeA extends TypeB ? TypeC : TypeD

ಇದರರ್ಥ: TypeA ಯು TypeB ಗೆ ನಿಯೋಜಿಸಬಹುದಾದರೆ, ಫಲಿತಾಂಶದ ಟೈಪ್ TypeC ಆಗಿರುತ್ತದೆ; ಇಲ್ಲದಿದ್ದರೆ, ಫಲಿತಾಂಶದ ಟೈಪ್ TypeD ಆಗಿರುತ್ತದೆ.

ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು

1. ಸ್ಟೇಟಸ್ ಅನ್ನು ಸಂದೇಶಕ್ಕೆ ಮ್ಯಾಪ್ ಮಾಡುವುದು:


type Status = "pending" | "in progress" | "completed" | "failed";

type StatusMessage = T extends "pending"
  ? "Waiting for action"
  : T extends "in progress"
  ? "Currently processing"
  : T extends "completed"
  ? "Task finished successfully"
  : "An error occurred";

function getStatusMessage(status: T): StatusMessage {
  switch (status) {
    case "pending":
      return "Waiting for action" as StatusMessage;
    case "in progress":
      return "Currently processing" as StatusMessage;
    case "completed":
      return "Task finished successfully" as StatusMessage;
    case "failed":
      return "An error occurred" as StatusMessage;
    default:
      throw new Error("Invalid status");
  }
}

console.log(getStatusMessage("pending"));    // Waiting for action
console.log(getStatusMessage("in progress")); // Currently processing
console.log(getStatusMessage("completed"));   // Task finished successfully
console.log(getStatusMessage("failed"));      // An error occurred

ಈ ಉದಾಹರಣೆಯು StatusMessage ಟೈಪ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಇದು ಪ್ರತಿಯೊಂದು ಸಂಭವನೀಯ ಸ್ಟೇಟಸ್ ಅನ್ನು ಕಂಡೀಷನಲ್ ಟೈಪ್ಸ್ ಬಳಸಿ ಅನುಗುಣವಾದ ಸಂದೇಶಕ್ಕೆ ಮ್ಯಾಪ್ ಮಾಡುತ್ತದೆ. getStatusMessage ಫಂಕ್ಷನ್ ಈ ಟೈಪ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಟೈಪ್-ಸುರಕ್ಷಿತ ಸ್ಟೇಟಸ್ ಸಂದೇಶಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.

2. ಟೈಪ್-ಸುರಕ್ಷಿತ ಈವೆಂಟ್ ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ರಚಿಸುವುದು:


type EventType = "click" | "mouseover" | "keydown";

type EventData = T extends "click"
  ? { x: number; y: number; } // ಕ್ಲಿಕ್ ಈವೆಂಟ್ ಡೇಟಾ
  : T extends "mouseover"
  ? { target: HTMLElement; }   // ಮೌಸ್‌ಓವರ್ ಈವೆಂಟ್ ಡೇಟಾ
  : { key: string; }             // ಕೀಡೌನ್ ಈವೆಂಟ್ ಡೇಟಾ

function handleEvent(type: T, data: EventData) {
  console.log(`Handling event type ${type} with data:`, data);
}

handleEvent("click", { x: 10, y: 20 }); // ಮಾನ್ಯ
handleEvent("mouseover", { target: document.getElementById("myElement")! }); // ಮಾನ್ಯ
handleEvent("keydown", { key: "Enter" }); // ಮಾನ್ಯ

handleEvent("click", { key: "Enter" }); // ದೋಷ: '{ key: string; }' ಮಾದರಿಯ ಆರ್ಗ್ಯುಮೆಂಟ್ '{ x: number; y: number; }' ಮಾದರಿಯ ಪ್ಯಾರಾಮೀಟರ್‌ಗೆ ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ.

ಈ ಉದಾಹರಣೆಯು EventData ಟೈಪ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಅದು ಈವೆಂಟ್ ಟೈಪ್ ಆಧಾರದ ಮೇಲೆ ವಿಭಿನ್ನ ಡೇಟಾ ರಚನೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಇದು ಪ್ರತಿ ಈವೆಂಟ್ ಟೈಪ್‌ಗೆ handleEvent ಫಂಕ್ಷನ್‌ಗೆ ಸರಿಯಾದ ಡೇಟಾವನ್ನು ರವಾನಿಸಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಬಳಸಲು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು

ನಿಮ್ಮ ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳಲ್ಲಿ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸಲು, ಕೆಳಗಿನ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಪರಿಗಣಿಸಿ:

ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಬಳಸುವುದರ ಪ್ರಯೋಜನಗಳು

ತೀರ್ಮಾನ

ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಕಟ್ಟುನಿಟ್ಟಾದ ಮೌಲ್ಯ ನಿರ್ಬಂಧಗಳನ್ನು ಜಾರಿಗೊಳಿಸಲು, ಕೋಡ್ ಸ್ಪಷ್ಟತೆಯನ್ನು ಸುಧಾರಿಸಲು ಮತ್ತು ದೋಷಗಳನ್ನು ತಡೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಒಂದು ಶಕ್ತಿಶಾಲಿ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ. ಅವುಗಳ ಸಿಂಟ್ಯಾಕ್ಸ್, ಬಳಕೆ ಮತ್ತು ಪ್ರಯೋಜನಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನೀವು ಹೆಚ್ಚು ದೃಢವಾದ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲ ಟೈಪ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ರಚಿಸಲು ಲಿಟರಲ್ ಟೈಪ್ಸ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು. ಬಣ್ಣದ ಪ್ಯಾಲೆಟ್‌ಗಳು ಮತ್ತು API ಎಂಡ್‌ಪಾಯಿಂಟ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದರಿಂದ ಹಿಡಿದು ವಿವಿಧ ಭಾಷೆಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು ಮತ್ತು ಟೈಪ್-ಸುರಕ್ಷಿತ ಈವೆಂಟ್ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ರಚಿಸುವವರೆಗೆ, ಲಿಟರಲ್ ಟೈಪ್ಸ್ ನಿಮ್ಮ ಡೆವಲಪ್‌ಮೆಂಟ್ ವರ್ಕ್‌ಫ್ಲೋವನ್ನು ಗಣನೀಯವಾಗಿ ಹೆಚ್ಚಿಸಬಲ್ಲ ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಪ್ರಾಯೋಗಿಕ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನೀಡುತ್ತವೆ.