TypeScriptãªãã©ã«åãæ¢æ±ãå³å¯ãªå€ã®å¶çŽãé©çšããã³ãŒãã®æçæ§ãé«ãããšã©ãŒãé²ã匷åãªæ©èœã§ããå®è·µçãªäŸãšé«åºŠãªãã¯ããã¯ã§åŠã³ãŸãããã
TypeScriptãªãã©ã«å: æ£ç¢ºãªå€ã®å¶çŽããã¹ã¿ãŒãã
JavaScriptã®ã¹ãŒããŒã»ããã§ããTypeScriptã¯ãWebéçºã®åçãªäžçã«éçåä»ãããããããŸãããã®æã匷åãªæ©èœã®äžã€ããªãã©ã«åã®æŠå¿µã§ãããªãã©ã«åã䜿çšãããšã倿°ãããããã£ãä¿æã§ããæ£ç¢ºãªå€ãæå®ã§ããåå®å šæ§ãåäžãããäºæãã¬ãšã©ãŒãé²ãããšãã§ããŸãããã®èšäºã§ã¯ããªãã©ã«åã«ã€ããŠããã®æ§æãäœ¿çšæ³ãå©ç¹ãå®è·µçãªäŸãšãšãã«è©³ããæ¢ã£ãŠãããŸãã
ãªãã©ã«åãšã¯ïŒ
stringãnumberãbooleanã®ãããªåŸæ¥ã®åãšã¯ç°ãªãããªãã©ã«åã¯å€ã®åºç¯ãªã«ããŽãªã衚ããŸããã代ããã«ãç¹å®ãã€åºå®ã®å€ã衚ããŸããTypeScriptã¯3çš®é¡ã®ãªãã©ã«åããµããŒãããŠããŸã:
- æååãªãã©ã«å: ç¹å®ã®æååå€ã衚ããŸãã
- æ°å€ãªãã©ã«å: ç¹å®ã®æ°å€ã衚ããŸãã
- çåœå€ãªãã©ã«å: ç¹å®ã®å€ã§ãã
trueãŸãã¯falseã衚ããŸãã
ãªãã©ã«åã䜿çšããããšã§ãããŒã¿ã®å®éã®å¶çŽãåæ ããããæ£ç¢ºãªåå®çŸ©ãäœæã§ããããå ç¢ã§ä¿å®æ§ã®é«ãã³ãŒãã«ã€ãªãããŸãã
æååãªãã©ã«å
æååãªãã©ã«åã¯ãæãäžè¬çã«äœ¿çšããããªãã©ã«åã§ãã倿°ãããããã£ãããããããå®çŸ©ãããæååå€ã®ã»ããã®ãã¡ã®1ã€ããä¿æã§ããªãããšãæå®ã§ããŸãã
åºæ¬çãªæ§æ
æååãªãã©ã«åãå®çŸ©ããæ§æã¯åçŽã§ã:
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"); // ãšã©ãŒ: Argument of type '"purple"' is not assignable to parameter of type 'Color'.
ãã®äŸã¯ãæååãªãã©ã«åãèš±å¯ãããå€ã®å³å¯ãªã»ãããã©ã®ããã«åŒ·å¶ã§ãããã瀺ããŠãããéçºè ã誀ã£ãŠç¡å¹ãªè²ã䜿çšããã®ãé²ããŸãã
2. APIãšã³ããã€ã³ãã®å®çŸ©:
APIãæ±ãéãèš±å¯ããããšã³ããã€ã³ããæå®ããå¿ èŠããããããŸããæååãªãã©ã«åã¯ããã匷å¶ããã®ã«åœ¹ç«ã¡ãŸã:
type APIEndpoint = "/users" | "/posts" | "/comments";
function fetchData(endpoint: APIEndpoint) {
// ... æå®ããããšã³ããã€ã³ãããããŒã¿ããã§ããããå®è£
console.log(`Fetching data from ${endpoint}`);
}
fetchData("/users"); // æå¹
fetchData("/products"); // ãšã©ãŒ: Argument of type '"/products"' is not assignable to parameter of type '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"); // ãšã©ãŒ: Argument of type '"ja"' is not assignable to parameter of type '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); // ãšã©ãŒ: Argument of type '600' is not assignable to parameter of type 'HTTPStatus'.
ãã®äŸã§ã¯ãæå¹ãªHTTPã¹ããŒã¿ã¹ã³ãŒãã®äœ¿çšã匷å¶ããäžæ£ãŸãã¯éæšæºã®ã³ãŒãã®äœ¿çšã«ãããšã©ãŒãé²ããŸãã
2. åºå®ãªãã·ã§ã³ã®è¡šçŸ:
æ°å€ãªãã©ã«åã䜿çšããŠãèšå®ãªããžã§ã¯ãå ã®åºå®ãªãã·ã§ã³ã衚ãããšãã§ããŸã:
type RetryAttempts = 1 | 3 | 5;
interface Config {
retryAttempts: RetryAttempts;
}
const config1: Config = { retryAttempts: 3 }; // æå¹
const config2: Config = { retryAttempts: 7 }; // ãšã©ãŒ: Type '{ retryAttempts: 7; }' is not assignable to type '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ããããã£ãå€å¥åãšããŠæ©èœããTypeScriptã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" }; // ãšã©ãŒ: Type '{ id: number; description: string; status: string; }' is not assignable to type 'Task'.
ãã®äŸã¯ãTaskãªããžã§ã¯ãã«å¯ŸããŠèš±å¯ãããç¹å®ã®ã¹ããŒã¿ã¹å€ã®ã»ããã匷å¶ããæ¹æ³ã瀺ããŠããŸãã
2. ããã€ã¹ã¿ã€ãã®å®çŸ©:
ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãç°ãªãããã€ã¹ã¿ã€ããæ±ãå¿ èŠããããããããŸãããæååãªãã©ã«åã®ãŠããªã³ã䜿çšããŠãããã衚ãããšãã§ããŸã:
type DeviceType = "mobile" | "tablet" | "desktop";
function logDeviceType(device: DeviceType) {
console.log(`Device type: ${device}`);
}
logDeviceType("mobile"); // æå¹
logDeviceType("smartwatch"); // ãšã©ãŒ: Argument of type '"smartwatch"' is not assignable to parameter of type '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"); // ãšã©ãŒ: Argument of type '"CAD"' is not assignable to parameter of type '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")); // ãšã©ãŒ: Argument of type '"Funday"' is not assignable to parameter of type 'DayOfWeek'.
ãªãã©ã«ã®æšè«
TypeScriptã¯ã倿°ã«ä»£å
¥ããå€ã«åºã¥ããŠãªãã©ã«åãèªåçã«æšè«ããããšããããããŸããããã¯ãconst倿°ãæ±ãéã«ç¹ã«äŸ¿å©ã§ãã
å®è·µçãªäŸ
1. æååãªãã©ã«åã®æšè«:
const apiKey = "your-api-key"; // TypeScriptã¯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)); // ãšã©ãŒ: Argument of type 'string' is not assignable to parameter of type '"your-api-key"'.
ãã®äŸã§ã¯ãTypeScriptã¯apiKeyã®åãæååãªãã©ã«å"your-api-key"ãšããŠæšè«ããŸãããã ãã宿°ã§ãªãå€ã倿°ã«ä»£å
¥ãããšãTypeScriptã¯éåžžãããåºç¯ãªstringåãæšè«ããŸãã
2. æ°å€ãªãã©ã«åã®æšè«:
const port = 8080; // TypeScriptã¯portã®åã8080ãšæšè«ããŸã
function startServer(portNumber: 8080) {
console.log(`Starting server on port ${portNumber}`);
}
startServer(port); // æå¹
const anotherPort = 3000;
startServer(anotherPort); // ãšã©ãŒ: Argument of type 'number' is not assignable to parameter of type '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; } // Clickã€ãã³ãããŒã¿
: T extends "mouseover"
? { target: HTMLElement; } // Mouseoverã€ãã³ãããŒã¿
: { key: string; } // Keydownã€ãã³ãããŒã¿
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" }); // ãšã©ãŒ: Argument of type '{ key: string; }' is not assignable to parameter of type '{ x: number; y: number; }'.
ãã®äŸã§ã¯ãã€ãã³ãã¿ã€ãã«åºã¥ããŠç°ãªãããŒã¿æ§é ãå®çŸ©ããEventDataåãäœæããŸããããã«ãããåã€ãã³ãã¿ã€ãã«å¯ŸããŠæ£ããããŒã¿ãhandleEvent颿°ã«æž¡ãããããšãä¿èšŒã§ããŸãã
ãªãã©ã«åã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
TypeScriptãããžã§ã¯ãã§ãªãã©ã«åã广çã«äœ¿çšããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ãã:
- å¶çŽã匷å¶ããããã«ãªãã©ã«åã䜿çšãã: ã³ãŒãå ã§å€æ°ãããããã£ãç¹å®ã®å€ã®ã¿ãä¿æãã¹ãç®æãç¹å®ãããªãã©ã«åã䜿çšããŠãããã®å¶çŽã匷å¶ããŸãã
- ãªãã©ã«åãšãŠããªã³åãçµã¿åããã: ãªãã©ã«åãšãŠããªã³åãçµã¿åãããããšã§ãããæè»ã§è¡šçŸåè±ããªåå®çŸ©ãäœæããŸãã
- å¯èªæ§ã®ããã«åãšã€ãªã¢ã¹ã䜿çšãã: åãšã€ãªã¢ã¹ã䜿çšããŠãªãã©ã«åã«æå³ã®ããååãä»ããã³ãŒãã®å¯èªæ§ãšä¿å®æ§ãåäžãããŸãã
- ãªãã©ã«ã®æšè«ã掻çšãã:
const倿°ã䜿çšããŠãTypeScriptã®ãªãã©ã«æšè«æ©èœã掻çšããŸãã - enumã®äœ¿çšãæ€èšãã: è«ççã«é¢é£ããåºç€ãšãªãæ°å€è¡šçŸãå¿ èŠãªåºå®å€ã®ã»ããã«ã¯ããªãã©ã«åã®ä»£ããã«enumã䜿çšããŸãããã ããå®è¡æã³ã¹ããç¹å®ã®ã·ããªãªã§ã®åãã§ãã¯ãç·©ããªãå¯èœæ§ãªã©ããªãã©ã«åãšæ¯èŒããå Žåã®enumã®æ¬ ç¹ã«æ³šæããŠãã ããã
- è€éãªã·ããªãªã«ã¯æ¡ä»¶ä»ãåã䜿çšãã: ä»ã®åã«äŸåããåãå®çŸ©ããå¿ èŠãããå Žåã¯ãæ¡ä»¶ä»ãåããªãã©ã«åãšçµã¿åãããŠãéåžžã«æè»ã§åŒ·åãªåã·ã¹ãã ãäœæããŸãã
- å³å¯ããšæè»æ§ã®ãã©ã³ã¹ãåã: ãªãã©ã«åã¯åªããåå®å šæ§ãæäŸããŸãããã³ãŒããé床ã«å¶çŽããªãããã«æ³šæããŠãã ããããªãã©ã«åã䜿çšãããã©ãããæ±ºå®ããéã«ã¯ãå³å¯ããšæè»æ§ã®ãã¬ãŒããªããèæ ®ããŠãã ããã
ãªãã©ã«åã䜿çšããå©ç¹
- åå®å šæ§ã®åäž: ãªãã©ã«åã䜿çšãããšãããæ£ç¢ºãªåå¶çŽãå®çŸ©ã§ããç¡å¹ãªå€ã«ããå®è¡æãšã©ãŒã®ãªã¹ã¯ãäœæžã§ããŸãã
- ã³ãŒãã®æçæ§ã®åäž: 倿°ãããããã£ã«èš±å¯ãããå€ãæç€ºçã«æå®ããããšã§ããªãã©ã«åã¯ã³ãŒããããèªã¿ããããçè§£ããããããŸãã
- ããè¯ãèªåè£å®: IDEã¯ãªãã©ã«åã«åºã¥ããŠããè¯ãèªåè£å®ã®ææ¡ãæäŸã§ããéçºè äœéšãåäžãããŸãã
- ãªãã¡ã¯ã¿ãªã³ã°ã®å®å šæ§: ãªãã©ã«åã¯ããªãã¡ã¯ã¿ãªã³ã°ããã»ã¹äžã«å°å ¥ãããåãšã©ãŒãTypeScriptã³ã³ãã€ã©ããã£ãããããããèªä¿¡ãæã£ãŠã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããã®ã«åœ¹ç«ã¡ãŸãã
- èªç¥çè² è·ã®è»œæž: å¯èœãªå€ã®ç¯å²ãçããããšã§ããªãã©ã«åã¯éçºè ã®èªç¥çè² è·ã軜æžã§ããŸãã
ãŸãšã
TypeScriptã®ãªãã©ã«åã¯ãå³å¯ãªå€ã®å¶çŽã匷å¶ããã³ãŒãã®æçæ§ãåäžããããšã©ãŒãé²ã匷åãªæ©èœã§ãããã®æ§æãäœ¿çšæ³ãå©ç¹ãçè§£ããããšã§ããªãã©ã«åãæŽ»çšããŠãããå ç¢ã§ä¿å®æ§ã®é«ãTypeScriptã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããã«ã©ãŒãã¬ãããAPIãšã³ããã€ã³ãã®å®çŸ©ãããå€èšèªå¯Ÿå¿ãåå®å šãªã€ãã³ããã³ãã©ã®äœæãŸã§ããªãã©ã«åã¯éçºã¯ãŒã¯ãããŒãå€§å¹ ã«åäžãããå¹ åºãå®çšçãªã¢ããªã±ãŒã·ã§ã³ãæäŸããŸãã