함수에 타입 지정하기
1. 파라미터와 리턴 타입 지정
방법은 :타입을 쓰면 된다.
function 인사하기(이름: string, 나이: number): string {
return `안녕 내 이름은 ${이름}이고, 나이는 ${나이}살이야`;
}
function 인사하기2({ 이름, 나이 }: { 이름: string; 나이: number }): string {
return `안녕 내 이름은 ${이름}이고, 나이는 ${나이}살이야`;
}
console.log(인사하기("병수", 12));
console.log(인사하기2({ 이름: "병수", 나이: 12 }));
function printMessage(message: string): void {
console.log(message);
}
printMessage("Hello TypeScript!"); // 콘솔에 "Hello TypeScript!"가 출력됩니다.
2. 비동기 함수에서 리턴 타입 지정
방법은 리턴 부분에 :promise<타입>을 쓰면 된다.
interface todo {
userId: number;
id: number;
title: string;
completed: boolean;
}
async function 데이터가져오기(): Promise<todo> {
const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
const result = await response.json();
// result === {
// "userId": 1,
// "id": 1,
// "title": "delectus aut autem",
// "completed": false
// }
return result;
}
3. useState에서 타입 지정하는 법
useState 옆에 제네릭 타입을 지정한다.
// 문제: 문자열 타입의 상태를 가지는 컴포넌트를 만드세요. `useState`와 `useEffect`를 사용하여 상태를 관리하고, 컴포넌트가 마운트될 때 콘솔에 메시지를 출력하세요.
import React, { useState, useEffect } from 'react';
const MessageComponent: React.FC = () => {
const [message, setMessage] = useState<string>("Hello TypeScript!");
useEffect(() => {
console.log("Component mounted!");
}, []); // 컴포넌트 마운트 시 실행
return (
<div>
<p>{message}</p>
<button onClick={() => setMessage("Updated message")}>Change Message</button>
</div>
);
};
export default MessageComponent;
import React, { useState } from 'react';
// 사용자 정보를 담는 객체 타입 정의
interface UserInfo {
id: number;
name: string;
email: string;
}
const UserComponent: React.FC = () => {
// 초기 사용자 정보 설정
const [userInfo, setUserInfo] = useState<UserInfo>({
id: 1,
name: "John Doe",
email: "johndoe@example.com"
});
// 사용자 이름을 업데이트하는 함수
const updateName = (newName: string) => {
setUserInfo({ ...userInfo, name: newName });
};
return (
<div>
<p>ID: {userInfo.id}</p>
<p>Name: {userInfo.name}</p>
<p>Email: {userInfo.email}</p>
<button onClick={() => updateName("Jane Doe")}>Change Name to Jane Doe</button>
</div>
);
};
export default UserComponent;
'TIL' 카테고리의 다른 글
24. 06. 28 TIL (0) | 2024.06.28 |
---|---|
24. 06. 27 TIL (0) | 2024.06.27 |
타입스크립트 기본 - 추론, 명시, 인터페이스 등 (0) | 2024.06.25 |
타입스크립트의 기본 타입 (0) | 2024.06.24 |
24. 06. 21 TIL (0) | 2024.06.21 |