TypeScript — это строго типизированный язык программирования, который является надмножеством JavaScript. Он добавляет статическую типизацию и дополнительные возможности к стандартному JavaScript.
TypeScript решает три ключевые проблемы JavaScript-разработки:
// TypeScript код
function add(a: number, b: number): number {
return a + b;
}
// После компиляции в JavaScript
function add(a, b) {
return a + b;
}
string
, number
, boolean
any
, unknown
, never
, void
interface ButtonProps {
label: string;
onClick: () => void;
disabled?: boolean;
variant?: 'primary' | 'secondary';
}
const Button: React.FC<ButtonProps> = ({ label, onClick, disabled = false }) => {
return <button onClick={onClick} disabled={disabled}>{label}</button>;
}
const [count, setCount] = useState<number>(0);
const user = useContext<UserContextType>(UserContext);
type Action =
| { type: 'increment' }
| { type: 'decrement' }
| { type: 'reset'; payload: number };
function counterReducer(state: number, action: Action): number {
switch (action.type) {
case 'increment': return state + 1;
case 'decrement': return state - 1;
case 'reset': return action.payload;
default: return state;
}
}
interface User {
id: number;
name: string;
email?: string; // Опциональное поле
}
type Status = 'active' | 'inactive' | 'pending';
function identity<T>(arg: T): T {
return arg;
}
type PartialUser = Partial<User>; // Все поля опциональны
type ReadonlyUser = Readonly<User>; // Все поля только для чтения
npm install --save-dev typescript @types/react @types/react-dom
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"baseUrl": "src"
},
"include": ["src"]
}
TypeScript — это:
Для React-разработчиков TypeScript особенно полезен благодаря:
Использование TypeScript в React-проектах: