TypeScript в приложении React вместо ES6?

Я видел проекты React и примеры, когда люди решили использовать TypeScript вместо ES6. Хотите знать, чего мы не можем достичь с помощью ES6, чего можно добиться, используя TypeScript с React?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
83
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Wondering what we can not achieve using ES6, which is possible by using TypeScript with React?

ТипБезопасность ?. TypeScript обеспечивает проверку типов время компиляции, чего нет в ES6/Pure JavaScript: http://www.typescriptlang.org//Почему TypeScript

При этом, если вы переключите checkJS на true и у вас есть файл jsconfig.json в VS Code, вы также получите проверку типов и Intellisense в Javascript, и вы сможете использовать файлы .d.ts. Конечно, есть еще некоторые различия между TS и JS.

Kokodoko 03.05.2019 12:57

Спасибо за ответ, ребята. Да, у меня такое же впечатление, что TypeScript обеспечивает безопасность типов во время компиляции, чего можно добиться и в версиях ESX. Кроме этого, я думаю, что нет никакой большой выгоды. Иногда личные предпочтения разработчика в зависимости от навыков и т. д.

S G 04.05.2019 01:49
Ответ принят как подходящий

Я уверен, вы знаете, что ES6 — это дополнительные возможности для javascript. Typescript, являясь расширенным набором javascript, также реализует эти функции. Если вы хотите использовать функции ES7 с машинописным текстом, вы можете настроить его для этого. Итак, Typescript и ESX независимы. Как сказал Басарат, Typescript дает вам проверку типов во время компиляции: возможность и нотация для определения типов в вашем коде. Чтобы нарисовать картину того, на что это может быть похоже, вот надуманный пример. Если у вас есть данные, поступающие от API...

type Category = "Kitchen" | "Hardware" | "Linens";

//dont know exactly what users[n].about looks like yet
type Data = {
  users: {name: string, id: string, about: any}[];
  products: {name: string, id: string: category: Category}[];
}

export async function getUsers() {
  const data: Data = await fetch.get('localhost:3000/api');
  return data.users.map(u => u.name);
}

Здесь есть ряд преимуществ.

  1. Когда я пишу data.users.map, моя IDE знает, что пользователи — это массив, и предлагает мне функции массива.
  2. Моя IDE выдаст мне красную строку, если я попытаюсь выполнить функцию, не являющуюся массивом, в массиве.
  3. Когда я пишу эту часть u => u.name, моя IDE будет знать тип U и автоматически предложит мне u.name и u.id
  4. Моя IDE выдаст мне ошибку красной строки, если я попытаюсь ввести что-то еще, кроме этих двух свойств. Мне не нужно использовать console.info для двойной проверки на наличие опечаток.

Кроме того, если я попытаюсь создать функцию addProduct, я также могу извлечь свое определение типа для Product и снова использовать его следующим образом:

export function addProduct(product: Product) {
  data.products.push(product);
}

... если вы попытаетесь использовать эту функцию, но не используете одну из строк, определенных в Category выше, вы также получите сообщение об ошибке!

addProducts({name: "Missile Launcher", id: "Boom10001", Category: "Artillary"});

Спасибо за подробную информацию, бро, ценю это. Но я думаю, что все преимущества, связанные с IDE, могут быть достигнуты с помощью различных плагинов. Итак, в целом, я думаю, что преимущества связаны только с типами, в остальном это личное предпочтение разработчика.

S G 04.05.2019 01:46

Преимущества IDE, которые приходят через плагины, обычно возможны, потому что плагин пытается сделать какой-то вывод типа. Это не всегда точно, и если вы явно не укажете ему, с чем вы работаете/экспортируете из модуля, он обычно не может догадаться. Что касается общей полезности, мое эмпирическое правило таково: если я создаю что-то нетривиального размера, требующее обслуживания, это почти всегда стоит дополнительных хлопот, IMO.

Dude 04.05.2019 21:33

Ах, и я полностью пропустил ваш вопрос о реакции. TS на самом деле очень хорош в React. Вместо протипов вы используете типы. И вы получаете дополнительное преимущество уведомлений об ошибках в IDE, а не во время выполнения. Например, вы используете машинописный текст, чтобы сказать, что у вашего компонента есть реквизиты, для которых требуется имя и идентификатор, и ничего больше: вы получите в IDE ошибки для любых дополнительных или отсутствующих реквизитов при попытке использовать этот компонент.

Dude 07.05.2019 23:45

Другие вопросы по теме