介绍
作为JavaScript开发人员,Learning TypeScript将通过获得静态键入,改进的工具和强大的代码可维护性的额外好处来增强您的网络开发技能。您不仅会成为一个更具用力的开发人员,而且您还将为更广泛的工作机会打开大门,并在就业市场上获得竞争优势!
在本文中,科技行业专家Matt Lawrence和Mike Karan将涵盖打字稿,包括它是什么,您应该学习的基础知识和其他学习资源。
本文涵盖的主题包括:
-
什么是Typescript
-
谁应该学习打字稿
-
打字稿基础知识
为什么制作JavaScript
要更好地了解什么是打字稿,让我们首先看一下JavaScript是什么以及为何制作。
在创建JavaScript之前,网站是静态的,仅由HTML和CSS组成,没有交互性或动态内容。所以,这很无聊。要将网页提升到一个新的级别,JavaScript由Brendan Eich创建,使用户可以与网页进行交互!重要的是要注意,可以通过网络浏览器直接读取JavaScript而无需编译JavaScript,从而易于在网站上实现。
Brendan Eich在短短10天内就开发了JavaScript的初始原型! ðÖ
为什么制作打字稿
尽管有许多优势,但JavaScript仍有某些缺点。与其他编码语言不同,您无需在JavaScript中指定变量类型(这是一个动态打字系统)。这允许变量在运行时更改类型,这可能会导致运行时错误,并且随着项目的增加,代码更加难以维护。
例如,在Microsoft的VBA编码语言中(我确实显示了我使用此示例ð的年龄),您需要声明一个变量类型,而在JavaScript中,您没有:
在VBA中,您需要声明这样的变量类型:
Dim name As String
Dim age As Integer
name = "Michael Larocca"
age = 48
在JavaScript中,您无需声明一个变量类型:
let name = "Michael Larocca";
let age = 48;
诸如此类的限制促使Microsoft在2012年开发打字稿,该公司旨在解决这些问题并增强整体开发人员的体验。
与JavaScript不同,打字稿需要将其转换为JavaScript,因为它不能由Web浏览器直接读取。
ð€您知道吗? 打字稿是JavaScript的超集,这意味着它包含JavaScript的所有功能,并添加了其他功能,例如静态键入,以使编码更加可靠,更易于编码维护。
谁应该学习打字稿?
那么,您应该学习打字稿吗?迈克(Mike)解释了您是否已经从为客户创建的项目中赚取收入,您没有必要在其中学习并纳入打字稿。
但是,如果您正在学习以被录用的目的,那就是的!您不仅可以通过学习来获得竞争优势,而且您还将有资格获得更广泛的工作机会(只需检查当地的工作清单即可查看ð°)!
Mike还建议具有更高编码语言背景的学生也是学习打字稿的好候选者。
如何创建打字稿项目
您可以通过使用VITE创建一个React项目并选择Typescript来获得一些练习。有关对初学者友好的指南,您可以关注和编码我的文章:How to Create a Local React Environment with Vite
,您可以在学习和合并基础知识时获得打字稿的其他好处,您可以禁用严格的模式。要禁用严格模式,请在tsconfig.json
文件中将strict
选项设置为false
。
以禁用打字稿中的严格模式,将您的tsconfig.json文件修改为:
{
"compilerOptions": {
"strict": false
}
}
打字稿基础知识
±±在按下“恐慌”按钮之前更高级的功能。
打字稿的基础知识包括:
-
静态打字
-
接口和类
-
generics
-
类型推理
静态打字
JavaScript使用动态键入,可以在整个程序中重新分配变量类型。
例如,如果您的员工有一个数字作为变量类型的变量,值为(12),然后稍后,也有必要包括员工的面积(红色),则可以将变量的类型重新分配到字符串中,以使新值(RED12)起作用。
typeScript使用静态键入,该键入能够在声明时设置变量类型。这样做可以阻止您在整个程序中更改变量的类型。
// JavaScript example (dynamic typing)
let employee = 12;
employee = "RED12";
// TypeScript example (static typing)
let employeeId: number = 12;
// employeeId = "RED12"; // This would cause a type error in TypeScript
打字稿交集
打字稿交叉点是将多种类型组合到一种类型中的一种方式,允许变量或对象具有所有组合类型的属性和功能。它用类型之间的andand(&)表示。
// Define two types
type EmployeeCode = {
empCode: string;
};
type EmployeeNumber = {
empNumber: number;
};
// Intersection type combining EmployeeCode and EmployeeNumber
type Employee = EmployeeCode & EmployeeNumber ;
// Create an object with the intersection type
const employeeInfo: Employee = {
empCode: "RED",
empNumber: 12,
};
打字稿类型ANY
在生产代码中不使用,当您不确定该类型是什么时,Typescript具有“任何类型”。当您学习打字稿时,Mike告诉我们这是一个可以接受的解决方案。
let unknownType: any;
unknownType = "Hitchhiker's guide to the galaxy";
unknownType = 42;
unknownType = true;
ð注意: 允许使用 any
在打字稿中键入 strict
选项 em> false
在 tsconfig.json
file0
接口和类
Mike解释说,接口和类都来自面向对象的原理。那么,这些原则是什么?面向对象的原理是编程中使用的一组想法,用于组织代表实际事物或概念的对象。
接口
接口定义对象应具有的属性的结构和类型。这是一个名字和姓氏变量的示例:
interface Wizard {
firstName: string;
lastName: string;
}
const dracoMalfoy: Wizard = {
firstName: "Draco",
lastName: "Malfoy",
};
您可以创建另一个界面,例如Sport Quidditch的界面,并从向导接口继承信息。
interface QuidditchPlayer extends Wizard {
position: string;
team: string;
}
const quidditchPlayer: QuidditchPlayer = {
firstName: "Draco",
lastName: "Malfoy",
position: "Seeker",
team: "Slytherin",
};
课程
类也可以以类似于接口的方式使用,但具有创建构造函数和方法的附加功能。
class Wizard {
firstName: string;
lastName: string;
constructor(firstName: string, lastName: string) {
this.firstName = firstName;
this.lastName = lastName;
}
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}
const dracoMalfoy = new Wizard("Draco", "Malfoy");
class QuidditchPlayer extends Wizard {
position: string;
team: string;
constructor(firstName: string, lastName: string, position: string, team: string) {
super(firstName, lastName);
this.position = position;
this.team = team;
}
getPlayerInfo(): string {
return `${this.getFullName()} is a ${this.position} for the ${this.team} Quidditch team.`;
}
}
const quidditchPlayer = new QuidditchPlayer("Draco", "Malfoy", "Seeker", "Slytherin");
仿制药
仿制药在打字稿中是可重复使用的组件,可以在保持类型安全性的同时与不同的数据类型一起使用。它们允许您在不指定固定数据类型的情况下创建灵活和可重复使用的功能或类,确保代码具有适应性和类型保护。
function starTrek<T>(entry: Array<T>): Array<T> {
return entry;
}
let starTrekData = starTrek<(number | string | boolean)[]>([1701, "Live long and prosper.", true]);
在此代码中,我们有一个通用函数starTrek
,该函数接受Array<T>
类型的参数entry
并返回相同类型Array<T>
的数组。 <T>
表示通用类型,允许该功能在数组中与不同的数据类型一起使用,同时保持类型安全性。
然后,我们用包含数字,字符串和布尔值的数组调用该函数,展示其灵活性和可重复性。
当您不知道将返回的变量类型时,
generics很有用,因为它们允许您的代码具有适应性,可重复使用和类型的安全性,从而确保了更坚固且可维护的代码库。
ðâ€>提示: 练习打字稿的一种好方法是将您的JavaScript项目转换为Typescript!
打字稿编译
与JavaScript不同,浏览器不能直接读取打字稿。它需要编译。
使用打字稿编译器(TSC)用于此目的。它检查类型错误并生成可以在浏览器中执行的JavaScript代码。这样可以确保您的打字稿代码是类型的安全性和可维护的,同时仍与Web浏览器兼容。
要设置并运行打字稿编译器(TSC),请执行以下步骤:
-
使用NPM全局安装打字稿:
npm install -g typescript
-
创建一个打字稿文件,例如,
example.ts
-
将打字稿文件编译到JavaScript:
tsc example.ts
-
要在开发时设置打字稿编译器以连续运行,请使用
--watch
标志:tsc example.ts --watch
tsc example.ts --watch
此命令将在手表模式下启动打字稿编译器,这意味着它将连续监视example.ts
文件以进行更改并在文件检测到任何更改时重新编译该文件,检查该过程中的代码和键入错误。
tsconfig.json文件是打字稿编译器的配置文件。它允许您自定义设置,例如目标JavaScript版本,严格模式和输出目录。要创建和配置tsconfig.json文件,请按照以下步骤:
-
在您项目的根目录中,创建一个名为“ tsconfig.json”的新文件
-
在您的文本编辑器中打开tsconfig.json文件。
-
添加以下基本配置:
{
"compilerOptions": {
"target": "es5",
"strict": true,
"outDir": "./dist"
}
}
- 保存文件。
在此示例中,“ target ”选项设置为“ es5 ”,这意味着打字稿编译器将生成与Ecmascript 5标准兼容的JavaScript代码。 “ strict ”选项设置为“ true ”,启用严格的类型检查以获得更好的代码质量。 “ OUTDIR ”选项为编译的JavaScript文件指定输出目录,在这种情况下,该文件是“ dist ”。项目的根目录中的文件夹。
您可以根据项目的要求进一步自定义带有其他选项的tsconfig.json文件。
开始学习打字稿
要开始学习打字稿,请遵循以下可行的步骤:
-
访问打字稿官方文档:https://www.typescriptlang.org/docs/
-
参加迪伦以色列的免费Scrimba课程:https://www.youtube.com/watch?v=Z7O5pQwCmqI&t=21s
-
通过将现有的JavaScript项目转换为打字稿来练习。
-
加入与打字稿相关的论坛或社区以进行支持和网络。
通过遵循这些步骤并利用提供的资源,您将竭尽全力掌握打字稿并增强您的网络开发技能!
一定要听这集!
第249集 Do You Need To Learn TypeScript in 2023?
一定要查看社交活动上的所有内容!
scrimba折扣!
-
学习使用Scrimba与其交互式后续代码编辑器
学习代码
-
加入他们的独家不和谐社区和网络以找到您的第一份工作!
-
使用此URL在所有付费计划中获得10%的折扣:tinyurl.com/ScrimbaHATT
本文包含会员链接,这意味着我们可能会收到通过这些链接进行的任何购买的佣金,而无需支付额外费用。这有助于支持我们的工作,并使我们能够继续提供有价值的内容。谢谢您的支持!
我的其他所有内容
Mastering JavaScript Fundamentals: Unleashing Your Framework Readiness
How to Transition from JR Dev to an In-Demand Developer: Your Path to Getting Hired
结论
typeScript是为了解决JavaScript的限制,例如动态键入,这可能导致运行时错误和困难的代码维护。
Learning TypeScript通过提供静态键入,改进的工具和鲁棒的代码可维护性来增强您的Web开发技能。它还将为更多的工作机会打开大门,并为您带来竞争优势!
首先要学习基础知识,然后逐渐纳入更高级的功能,以增强您的技能和网络开发职业。打字稿基础知识包括静态键入,接口和类,仿制药和类型推理。
请记住,由于浏览器无法直接读取它,因此需要编译打字稿!要编译TypeScript,请使用打字稿编译器(TSC)并使用tsconfig.json文件进行配置。
要开始学习打字稿,您可以参加由科技名人迪伦·以色列(Dylan Israel)教授的免费Scrimba课程! Intro to Typescript Tutorial with Dylan Israel
让我们连接吧!我活跃于 LinkedIn 和 Twitter 。