https://opentutorials.org/module/6309
이고잉 코치님의 타입스크립트 강의 최초공개!!!!!!!!
폴더와 함께 만들고 싶을 때: npx create-react-app my-app --template typescript
폴더 안에 셋팅하고 싶을 때: npx create-react-app . --template typescript
npm build
npx serve -s build
타입스크립트 연습 사이트 : https://www.typescriptlang.org/play
리액트는 ANY 타입을 싫어한다!!!
//app.tsx
function Counter(props: { title: string }) {
console.log(props);
return (
<>
<h1>{props.title}</h1>
<button>+</button> 0
</>
);
}
function App() {
return (
<div>
<Counter title="불면증 카운터"></Counter>
<Counter title="고양이 카운터"></Counter>
<Counter title="Counter"></Counter>
</div>
);
}
type CounterProps = {
title: string;
initValue?: Number;// 이 props가 올 수도 있고 안올 수도 있고~!
};
type CounterProps = {
title: string;
initValue?: Number;
};
function Counter({ title, initValue }: CounterProps) {
return (
<>
<h1>{title}</h1>
<button onClick={up}>+</button> {initValue}
</>
);
}
function Counter({ title, initValue }: CounterProps) {
const count = useState(initValue);
function up() {
conut += 1;
}
return (
<>
<h1>{title}</h1>
<button onClick={up}>+</button> {initValue}
</>
);
}
첫번째 원소는 읽을 때 쓰고, 두번째 원소는 변경할 때 사용한다.
unction Counter({ title, initValue }: CounterProps) {
const countState = useState(initValue);
let count = countState[0];
let setCount = countState[1];
function up() {
setCount(count + 1);
}
return (
<>
<h1>{title}</h1>
<button onClick={up}>+</button> {count}
</>
);
}
function Counter({ title, initValue = 0 }: CounterProps) {
const countState = useState(initValue);
...
}
const [count, setCount] = userState(initValue);
import React, { useState } from "react";
import logo from "./logo.svg";
import "./App.css";
type CounterProps = {
title: string;
initValue?: number;
};
function Counter({ title, initValue = 0 }: CounterProps) {
// const countState = useState(initValue);
// let count = countState[0];
// let setCount = countState[1];
const [count, setCount] = useState(initValue);
function up() {
setCount(count + 1);
}
return (
<>
<h1>{title}</h1>
<button onClick={up}>+</button> {count}
</>
);
}
function App() {
return (
<div>
<Counter title="불면증 카운터" initValue={0}></Counter>
</div>
);
}
export default App;