فهرست سرفصل‌های TypeScript
خانه (Home) معرفی (Introduction) شروع سریع (Get Started) انواع ساده (Simple Types) تعریف صریح و استنتاج نوع (Explicit & Inference) انواع ویژه (Special Types) آرایه ها (Arrays) تاپل ها (Tuples) انواع شیء (Object Types) شمارشی ها (Enums) نام مستعار و اینترفیس ها (Aliases & Interfaces) انواع اتحادی (Union Types) توابع (Functions) تبدیل نوع (Casting) کلاس ها (Classes) جنریک های پایه (Basic Generics) انواع کاربردی (Utility Types) کلیدواژه keyof (Keyof) Null (Null) Definitely Typed (Definitely Typed) به روزرسانی های نسخه 5 (5 Updates) پیکربندی (Configuration) با Node.js (with Node.js) با React (with React) ابزارها (Tooling) انواع پیشرفته (Advanced Types) نگهبان های نوع (Type Guards) انواع شرطی (Conditional Types) انواع نگاشتی (Mapped Types) استنتاج نوع (Type Inference) انواع لیترال (Literal Types) فضای نام (Namespaces) امضاهای ایندکس (Index Signatures) ادغام اعلان ها (Declaration Merging) برنامه نویسی ناهمگام (Async Programming) دکوراتورها (Decorators) در پروژه های JS (in JS Projects) مهاجرت (Migration) مدیریت خطا (Error Handling) بهترین شیوه ها (Best Practices) ادیتور (Editor) تمرین ها (Exercises) آزمون (Quiz) سرفصل دوره (Syllabus) برنامه مطالعه (Study Plan) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
TypeScript

TypeScript — ابزارها (Tooling)

آخرین بروزرسانی: 1404/08/14

ابزارها (Tooling)

اینجا درباره «ابزارهای تایپ اسکریپت» حرف می زنیم. ابزار یعنی برنامه کمکی برای کدنویسی بهتر. بنابراین کدت مرتب تر می شود و خطاها زودتر دیده می شوند. مثل داشتن خط کش و پاک کن کنار دفتر مشق.

اکوسیستم توسعه تایپ اسکریپت

چرخ دنده های اصلی این اکوسیستم چنین اند: کیفیت کد با ESLint، قالب بندی با Prettier، ساخت با Vite یا Webpack، و آزمون با Jest. سپس همه در ادیتور هماهنگ می شوند.

Lint با ESLint

«لینت (Lint)» یعنی یابنده ایرادهای سبک و الگوی کد. این کمک می کند تیم یکدست بنویسد.

# Install ESLint with TypeScript support
npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

مشاهده در ادیتور

حالا پیکربندی پیشنهادی را اضافه کن تا قوانین پیشنهادی فعال شوند.

// .eslintrc.json
{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": ["@typescript-eslint"],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:@typescript-eslint/recommended-requiring-type-checking"
  ],
  "parserOptions": {
    "project": "./tsconfig.json",
    "ecmaVersion": 2020,
    "sourceType": "module"
  },
  "rules": {
    "@typescript-eslint/explicit-function-return-type": "warn",
    "@typescript-eslint/no-explicit-any": "warn",
    "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }]
  }
}

مشاهده در ادیتور

اسکریپت های npm را نیز برای اجرا سریع اضافه کن.

// package.json
{
  "scripts": {
    "lint": "eslint . --ext .ts,.tsx",
    "lint:fix": "eslint . --ext .ts,.tsx --fix",
    "type-check": "tsc --noEmit"
  }
}

مشاهده در ادیتور

قالب بندی کد با Prettier

«قالب بندی (Formatting)» یعنی یک شکل کردن ظاهر کد. Prettier این کار را خودکار انجام می دهد.

# Install Prettier and related packages
npm install --save-dev prettier eslint-config-prettier eslint-plugin-prettier

مشاهده در ادیتور

تنظیمات پیشنهادی را در فایل های مخصوص ذخیره کن.

// .prettierrc
{
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2,
  "printWidth": 100,
  "trailingComma": "es5",
  "bracketSpacing": true,
  "arrowParens": "avoid"
}

// .prettierignore
node_modules
build
dist
.next
.vscode

مشاهده در ادیتور

برای جلوگیری از تداخل قوانین، این افزونه ESLint را آخر اضافه کن.

// .eslintrc.json
{
  "extends": [
    "plugin:prettier/recommended"
  ]
}

مشاهده در ادیتور

ابزارهای ساخت مدرن

Vite برای توسعه سریع عالی است. Webpack هم بسیار قابل پیکربندی است. هرکدام سرور توسعه و باندل نهایی می سازند.

# Create a new project with React + TypeScript
npm create vite@latest my-app -- --template react-ts
cd my-app
npm install
npm run dev

مشاهده در ادیتور

اگر Webpack می خواهی، نمونه کمینه زیر را ببین.

// webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/index.tsx',
  module: {
    rules: [
      {
        test: /\.(ts|tsx)$/,
        use: 'ts-loader',
        exclude: /node_modules/,
      },
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader'],
      },
    ],
  },
  resolve: {
    extensions: ['.tsx', '.ts', '.js'],
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './public/index.html',
    }),
  ],
  devServer: {
    static: path.join(__dirname, 'dist'),
    compress: true,
    port: 3000,
    hot: true,
  },
};

مشاهده در ادیتور

یک tsconfig سخت گیر هم برای مرورگرهای مدرن تنظیم کن.

// tsconfig.json
{
  "compilerOptions": {
    "target": "es2020",
    "module": "esnext",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx",
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src"],
  "exclude": ["node_modules"]
}

مشاهده در ادیتور

آماده سازی محیط توسعه

در VS Code افزونه ESLint و Prettier را نصب کن. سپس خطاها و قالب بندی هنگام ذخیره اعمال می شوند.

// .vscode/settings.json
{
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true,
    "source.organizeImports": true
  },
  "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"],
  "typescript.tsdk": "node_modules/typescript/lib",
  "typescript.preferences.importModuleSpecifier": "non-relative"
}

مشاهده در ادیتور

آزمایش (Testing) با Jest

«آزمایش (Test)» یعنی مطمئن شدن از رفتار درست کد. Jest و Testing Library برای ری اکت محبوب اند.

# Install testing dependencies
npm install --save-dev jest @types/jest ts-jest @testing-library/react @testing-library/jest-dom @testing-library/user-event

مشاهده در ادیتور

تنظیم نمونه Jest با ts-jest و نگاشت مسیرها:

// jest.config.js
module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'jsdom',
  setupFilesAfterEnv: ['@testing-library/jest-dom'],
  moduleNameMapper: {
    '^@/(.*)$': '/src/$1',
    '\\.(css|less|scss|sass)$': 'identity-obj-proxy',
  },
  transform: {
    '^.+\\.tsx?$': 'ts-jest',
  },
  testMatch: ['**/__tests__/**/*.test.(ts|tsx)'],
};

مشاهده در ادیتور

نمونه تست یک دکمه با کلیک:

// src/__tests__/Button.test.tsx
import React from 'react';
import { render, screen, fireEvent } from '@testing-library/react';
import '@testing-library/jest-dom';
import Button from '../components/Button';

describe('Button', () => {
  it('renders button with correct text', () => {
    render(<Button>Click me</Button>);
    expect(screen.getByRole('button', { name: /click me/i })).toBeInTheDocument();
  });

  it('calls onClick when clicked', () => {
    const handleClick = jest.fn();
    render(<Button onClick={handleClick}>Click me</Button>);
    fireEvent.click(screen.getByRole('button'));
    expect(handleClick).toHaveBeenCalledTimes(1);
  });
});

مشاهده در ادیتور

جمع بندی سریع

  • ابزارهای تایپ اسکریپت نظم و سرعت می دهند.
  • ESLint خطاهای سبک را می گیرد.
  • Prettier ظاهر کد را یکسان می کند.
  • Vite یا Webpack پروژه را می سازند.
  • Jest رفتار کد را می سنجد.

برای ادامه، صفحه با React (with React) را ببین و از ابزارهای تایپ اسکریپت در پروژه استفاده کن. برای تنظیمات پایه نیز پیکربندی را بررسی کن.