Typescript

Starter pack

Este curso est谩 completamente escrito en JavaScript, pero tambi茅n puedes usar TypeScript con React Three Fiber.

TypeScript es un superconjunto de JavaScript que a帽ade tipos al lenguaje. Es una excelente manera de detectar errores temprano y de tener una mejor experiencia de desarrollo con autocompletado y documentaci贸n.

La elecci贸n de usar TypeScript o no depende de ti. Para ayudarte a decidir, aqu铆 hay algunas preguntas que deber铆as considerar:

  • El tipo de proyecto que est谩s construyendo: 驴Est谩s esbozando una experiencia 3D o construyendo con la intenci贸n de lanzarlo? 驴Es un proyecto peque帽o o grande? 驴Est谩 destinado a mantenerse por mucho tiempo?
  • Tu equipo: 驴Est谩s trabajando solo o con otras personas? Al igual que los comentarios, los tipos son una excelente manera de hacer que tu c贸digo sea m谩s comprensible para los dem谩s.

No hay una respuesta correcta o incorrecta, depende de ti decidir qu茅 es lo mejor para tu proyecto. Dado que la biblioteca est谩 escrita en TypeScript, puedes beneficiarte de ella incluso si est谩s usando JavaScript.

Juntos veremos c贸mo convertir f谩cilmente nuestro proyecto inicial a TypeScript y c贸mo usarlo con React Three Fiber.

Pero esta lecci贸n no es un tutorial de TypeScript, si no tienes experiencia y quieres aprender m谩s sobre ello, deber铆as empezar aqu铆.

Configuraci贸n

En la lecci贸n de configuraci贸n, creamos un nuevo proyecto desde cero usando Vite. Si est谩s comenzando un nuevo proyecto, puedes seguir los mismos pasos y elegir la variante de TypeScript para tu proyecto en lugar de la de JavaScript. (No olvides volver aqu铆 despu茅s para descubrir c贸mo usarlo 馃き)

Veamos c贸mo convertir un proyecto existente a TypeScript en su lugar.

El proyecto inicial es el mismo que el resultado final de la lecci贸n de configuraci贸n, pero los pasos son los mismos para cualquier proyecto.

Instalar TypeScript

Primero, necesitamos instalar TypeScript en nuestro proyecto. Podemos hacerlo con el siguiente comando:

yarn add -D typescript

-D instalar谩 TypeScript como una dependencia de desarrollo. (Ya que no es necesaria en la compilaci贸n final de producci贸n)

TypeScript agrega un nuevo paso a nuestro proceso de construcci贸n. Necesitamos compilar nuestros archivos TypeScript a JavaScript antes de ejecutar nuestro proyecto. Para hacerlo, necesitamos actualizar el script de construcci贸n en nuestro package.json a lo siguiente:

"build": "tsc && vite build"

El comando tsc compilar谩 nuestros archivos TypeScript a JavaScript y el comando vite build construir谩 nuestro proyecto como de costumbre.

La extensi贸n de nuestros archivos pasar谩 a ser .tsx en lugar de .jsx y .ts en lugar de .js. A煤n en el archivo package.json, podemos ajustar el script lint para tenerlo en cuenta:

"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",

Configuraci贸n de TypeScript

Necesitamos crear un archivo tsconfig.json en la ra铆z de nuestro proyecto para configurar TypeScript:

{
  "compilerOptions": {
    "target": "ES2020",
    "useDefineForClassFields": true,
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "module": "ESNext",
    "skipLibCheck": true,

    /* Modo Bundler */
    "moduleResolution": "bundler",
    "allowImportingTsExtensions": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx",

    /* Linting */
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true
  },
  "include": ["src"],
  "references": [{ "path": "./tsconfig.node.json" }]
}

Y un tsconfig.node.json:

{
  "compilerOptions": {
    "composite": true,
    "skipLibCheck": true,
    "module": "ESNext",
    "moduleResolution": "bundler",
    "allowSyntheticDefaultImports": true
  },
  "include": ["vite.config.ts"]
}

Estas son las opciones predeterminadas para un proyecto React usando Vite. Puedes encontrar m谩s informaci贸n sobre ellas en la p谩gina de documentaci贸n de opciones del compilador.

Configuraci贸n de ESLint

Necesitamos actualizar nuestro archivo .eslintrc.cjs para tener en cuenta TypeScript:

module.exports = {
  env: { browser: true, es2020: true },
  extends: [
    "eslint:recommended",
    "plugin:react/recommended",
    "plugin:react/jsx-runtime",
    "plugin:@typescript-eslint/recommended",
    "plugin:react-hooks/recommended",
    "plugin:@react-three/recommended",
  ],
  parser: "@typescript-eslint/parser",
  settings: { react: { version: "18.2" } },
  plugins: ["react-refresh"],
  rules: {
    "react-refresh/only-export-components": "warn",
  },
};

Requiere dos nuevos paquetes:

yarn add -D @typescript-eslint/eslint-plugin @typescript-eslint/parser

End of lesson preview

To get access to the entire lesson, you need to purchase the course.