మాడ్యూల్ పాఠాలు (2/2)
సాహిత్య రకాలు మరియు వాదనలు
టైప్స్క్రిప్ట్ వేరియబుల్స్ యొక్క సాధ్యమైన విలువలను తగ్గించడానికి మరియు అవసరమైనప్పుడు మరింత నిర్దిష్ట రకాలను గుర్తించడానికి కంపైలర్ను బలవంతం చేయడానికి అధునాతన సాధనాలను అందిస్తుంది.
సాహిత్య రకాలు
లిటరల్ రకం ఖచ్చితమైన, ఒకే విలువను సూచిస్తుంది (ఉదాహరణకు, నిర్దిష్ట స్ట్రింగ్ లేదా సంఖ్య). అవి సాధారణంగా యూనియన్ రకాలతో కలుపుతారు:
type TrafficLight = 'red' | 'yellow' | 'green';
let light: TrafficLight;
light = 'red'; // OK
light = 'blue'; // Error: "blue" is not assignable to TrafficLightవాదనల రకం (as)
కొన్నిసార్లు మీరు కంపైల్ సమయంలో టైప్స్క్రిప్ట్ తెలుసుకోలేని రకం గురించి సమాచారాన్ని కలిగి ఉంటారు. ఈ సందర్భాలలో, మీరు as కీవర్డ్ని ఉపయోగించి రకం ధృవీకరణని ఉపయోగించవచ్చు:
const myCanvas = document.getElementById('main_canvas') as HTMLCanvasElement;నిర్ధారణ కంపైలర్కి ఇలా చెబుతుంది: "నన్ను నమ్మండి, ఈ మూలకం HTMLCanvasElement అని నాకు తెలుసు". ఇది రన్టైమ్లో ఎలాంటి తనిఖీలు లేదా క్యాస్ట్లను నిర్వహించదు; ఇది టైప్ చెకర్కు మాత్రమే సహాయపడుతుంది.
కన్స్ట్ అసెర్షన్స్ (as const)
మేము constతో ఒక వస్తువు లేదా శ్రేణిని ప్రకటించినప్పుడు, టైప్స్క్రిప్ట్ ఇప్పటికీ దాని అంతర్గత లక్షణాలను సవరించడానికి అనుమతిస్తుంది. చివర్లో as constని జోడించడం ద్వారా, మొత్తం నిర్మాణం స్తంభింపజేయబడుతుంది మరియు చదవడానికి-మాత్రమే చేయబడుతుంది, అన్ని లక్షణాలను వాటి ఖచ్చితమైన అక్షర రకాలుగా మారుస్తుంది:
const colors = ['red', 'green', 'blue'] as const;
// colors[0] = "yellow"; // Error: array is read-onlyటెంప్లేట్ లిటరల్ రకాలు
టెంప్లేట్ లిటరల్ రకాలు జావాస్క్రిప్ట్ టెంప్లేట్ స్ట్రింగ్ల పైన నిర్మించబడ్డాయి, కానీ టైప్ పొజిషన్లలో ఉపయోగించబడతాయి. అవి బహుళ సాహిత్య రకాలను ఒకటిగా కలపడానికి అనుమతిస్తాయి:
type Size = 'small' | 'large';
type Color = 'red' | 'blue';
// Creates the union: "small-red" | "small-blue" | "large-red" | "large-blue"
type ItemId = `${Size}-${Color}`;టెంప్లేట్ లిటరల్ రకాల్లో స్ట్రింగ్ యుటిలిటీస్
టెంప్లేట్ లిటరల్ టైప్లలోని అక్షరాలను మార్చటానికి టైప్స్క్రిప్ట్ ప్రత్యేక యుటిలిటీ రకాలను అందిస్తుంది:
Capitalize<StringType>: స్ట్రింగ్ యొక్క మొదటి అక్షరాన్ని క్యాపిటలైజ్ చేస్తుంది.Uncapitalize<StringType>: స్ట్రింగ్ యొక్క మొదటి అక్షరాన్ని క్యాపిటలైజ్ చేస్తుంది.Uppercase<StringType>: మొత్తం స్ట్రింగ్ను పెద్ద అక్షరానికి మారుస్తుంది.Lowercase<StringType>: మొత్తం స్ట్రింగ్ను చిన్న అక్షరానికి మారుస్తుంది.
type ActionType = 'click' | 'hover';
// Generates: "onClick" | "onHover"
type EventHandlers = `on${Capitalize<ActionType>}`;మీరే ప్రయత్నించండి
వ్యాయామం 1: డైరెక్షన్ లిటరల్ యూనియన్
'పైకి', 'డౌన్', 'ఎడమ' లేదా 'కుడి' స్ట్రింగ్లను మాత్రమే అంగీకరించే దిశ అనే అక్షర రకాన్ని నిర్వచించండి. ఆ తర్వాత మూవ్ (dir: Direction) పేరుతో ఒక ఫంక్షన్ను ప్రకటించండి: స్ట్రింగ్ 'మూవింగ్' స్ట్రింగ్ను రిటర్న్ చేసి ఆ తర్వాత స్వీకరించిన దిశను అందిస్తుంది.
సూచనను చూపించు
| ద్వారా వేరు చేయబడిన నాలుగు ఎంపికలతో టైప్ అలియాస్ను ముందుగా నిర్వచించండి, ఆపై పారామీటర్ మరియు రిటర్న్ రకాన్ని ఉల్లేఖించే మూవ్ ఫంక్షన్ను ప్రకటించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం 2: JSON.parseపై అసెర్షన్
JSON.parse ఫంక్షన్ డిఫాల్ట్గా ఏదైనా రకాన్ని అందిస్తుంది. పార్స్యూజర్ ఫంక్షన్ను సవరించండి, తద్వారా JSON.parse(json) ఫలితం కీవర్డ్గా ఉపయోగించి టైప్ {యూజర్నేమ్: స్ట్రింగ్ }గా నిర్ధారించబడుతుంది.
సూచనను చూపించు
JSON.parse(json) కాల్ తర్వాత వెంటనే '{ username: string }'ని జోడించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం 3: ఈవెంట్ల కోసం టెంప్లేట్ లిటరల్
స్థితి మరియు చర్య రకాలను బట్టి, 'స్టేటస్-యాక్షన్' ఫార్మాట్లో ఈవెంట్ అనే టెంప్లేట్ స్ట్రింగ్ రకాన్ని నిర్వచించండి (ఉదాహరణకు, 'ఓపెన్-క్లిక్').
సూచనను చూపించు
రకాన్ని నిర్వచించడానికి బ్యాక్టిక్లను ఉపయోగించండి మరియు లోపల ${Status}-${Action} సింటాక్స్.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం 4: క్యాపిటలైజ్తో టెంప్లేట్ లిటరల్ టైప్
'క్లిక్' లేదా 'హోవర్' చేయగలిగే లిటరల్ టైప్ ఈవెంట్ని నిర్వచించండి. ఆపై, క్యాపిటలైజ్డ్ ఈవెంట్ పేరు (అంటే, 'onClick' లేదా 'onHover') ఫార్మాట్లో ఈవెంట్హ్యాండ్లర్ని సూచించే తీగలను సూచించడానికి టెంప్లేట్ లిటరల్ రకాలను ఉపయోగించండి.
సూచనను చూపించు
ఈవెంట్ యొక్క మొదటి అక్షరాన్ని క్యాపిటలైజ్ చేయడానికి టెంప్లేట్ అక్షరార్థం లోపల క్యాపిటలైజ్<Event> ఉపయోగించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది