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





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
Спасибо за ответ, ребята. Да, у меня такое же впечатление, что TypeScript обеспечивает безопасность типов во время компиляции, чего можно добиться и в версиях ESX. Кроме этого, я думаю, что нет никакой большой выгоды. Иногда личные предпочтения разработчика в зависимости от навыков и т. д.
Я уверен, вы знаете, что 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);
}
Здесь есть ряд преимуществ.
data.users.map, моя IDE знает, что пользователи — это массив, и предлагает мне функции массива.u => u.name, моя IDE будет знать тип U и автоматически предложит мне u.name и u.idКроме того, если я попытаюсь создать функцию addProduct, я также могу извлечь свое определение типа для Product и снова использовать его следующим образом:
export function addProduct(product: Product) {
data.products.push(product);
}
... если вы попытаетесь использовать эту функцию, но не используете одну из строк, определенных в Category выше, вы также получите сообщение об ошибке!
addProducts({name: "Missile Launcher", id: "Boom10001", Category: "Artillary"});
Спасибо за подробную информацию, бро, ценю это. Но я думаю, что все преимущества, связанные с IDE, могут быть достигнуты с помощью различных плагинов. Итак, в целом, я думаю, что преимущества связаны только с типами, в остальном это личное предпочтение разработчика.
Преимущества IDE, которые приходят через плагины, обычно возможны, потому что плагин пытается сделать какой-то вывод типа. Это не всегда точно, и если вы явно не укажете ему, с чем вы работаете/экспортируете из модуля, он обычно не может догадаться. Что касается общей полезности, мое эмпирическое правило таково: если я создаю что-то нетривиального размера, требующее обслуживания, это почти всегда стоит дополнительных хлопот, IMO.
Ах, и я полностью пропустил ваш вопрос о реакции. TS на самом деле очень хорош в React. Вместо протипов вы используете типы. И вы получаете дополнительное преимущество уведомлений об ошибках в IDE, а не во время выполнения. Например, вы используете машинописный текст, чтобы сказать, что у вашего компонента есть реквизиты, для которых требуется имя и идентификатор, и ничего больше: вы получите в IDE ошибки для любых дополнительных или отсутствующих реквизитов при попытке использовать этот компонент.
При этом, если вы переключите
checkJSна true и у вас есть файлjsconfig.jsonв VS Code, вы также получите проверку типов и Intellisense в Javascript, и вы сможете использовать файлы.d.ts. Конечно, есть еще некоторые различия между TS и JS.