类型化的后端或前端
从一开始就用 TypeScript 搭建的应用,用接口和类型描述数据在系统中流动时的形状。
迪拜招聘 TypeScript 开发工程师的需求,往往出现在一个特定的时刻:JavaScript 代码库已经壮大到没有人能在脑海中掌握其全貌,或者一位新人不断引入本应被更严格的工具立即捕获的 bug。TypeScript 官方文档将其直白地描述为“带有类型语法的 JavaScript”,一门在 JavaScript 基础上构建、可在任何规模下提供更好工具支持的强类型语言。它会编译成普通 JavaScript,因此可以在任何运行 JavaScript 的地方运行。
实际效果是,在纯 JavaScript 中只有在运行时才会暴露的错误,例如用错误形状的数据调用一个函数,会在代码甚至还没提交之前就被编辑器标记出来,而不是等到用户在生产环境中触发它。这种差异会随着代码库和团队规模增长而越来越重要,越多人接触同一份代码,一份清晰的类型定义就越能提前拦下本可能悄悄溜进发布版本的错误,这也是本页把 TypeScript 当作一个独立招聘对象、而不是并入通用 JavaScript 简报的原因。
TypeScript 开发工程师负责搭建的内容
类型系统在真实代码库中真正发挥作用的地方。
从一开始就用 TypeScript 搭建的应用,用接口和类型描述数据在系统中流动时的形状。
将现有的 JavaScript 代码库逐文件、增量地转换为 TypeScript,而不必为此中断功能开发。
在前端和后端之间共享的类型,或发布给其他团队使用的类型,让 API 两端在结构上就对数据的形状达成一致。
针对项目调优的编译器配置,决定类型检查应有多严格,以及代码库中哪些地方仍允许更宽松、未类型化的代码。
跨越大型代码库的结构性改动,类型检查器能捕获纯 JavaScript 重构容易遗漏的调用点。
为没有自带类型的库编写或维护类型,让团队其他成员在使用它时也能获得同样的安全性。
大多数在迪拜招聘 TypeScript 开发工程师的团队,需要的是以上多项内容的组合,而不只是清单中的某一项,具体比例会随着产品阶段和团队规模而变化,因此值得在简报中明确说明目前最迫切的是哪一部分。
值得关注的技能
关于何时以及如何严格地为某项内容定义类型的判断力,而不只是熟悉语法。
| 技能或工具 | 良好水平的表现 | 为什么重要 |
|---|---|---|
| 类型设计 | 编写能真实描述数据形状的类型,而不是一堵关闭检查器的 “any” 之墙 | 过于宽松的类型会带来虚假的安全感,却捕获不到真正会影响生产环境的错误 |
| 迁移经验 | 此前转换过现有的 JavaScript 代码库,并能说明当时是如何安排顺序的 | 规划不当的迁移会在中途停滞,让代码库长期陷入更糟糕、更难维护的混合状态 |
| 编译器配置 | 理解严格模式设置,并能说明项目所选严格程度的理由 | 错误的配置要么持续阻碍团队的正常开发节奏,要么放过真正的 bug |
| 底层 JavaScript 熟练度 | 先在纯 JavaScript 上扎实,因为 TypeScript 是建立在其之上,而非取代它 | 类型错误往往是底层 JavaScript 理解不足的表现,而不是类型系统本身的问题 |
| 对泛型和接口的掌握 | 用它们来描述真正可复用的结构,而不是为了用而用 | 过度设计的类型和完全没有类型一样会拖慢团队的日常开发节奏 |
TypeScript 官方的 文档网站 在直接解释这些取舍方面做得格外出色,涵盖了从基础语法到高级类型技巧的完整内容,一位在交流中会引用它、而不只是引用某个框架文档的候选人,通常是更强的人选。这是在迪拜招聘 TypeScript 开发工程师时,判断候选人是否真正理解类型系统、而不仅是容忍它的较可靠方式之一。
与我们合作的方式
专职开发人员适合一个已经使用 TypeScript 构建的持续性产品,类型系统会随着代码库不断演进,团队需要有人持续维护和扩展这些类型定义。限定项目适合一次界定清晰的 JavaScript 迁移,交付时代码库已完成转换、附带文档并完整移交。招聘支持适合正在搭建自己长期 TypeScript 能力团队的企业。咨询服务适合在投入工程时间之前,就是否以及应以多严格的程度采用 TypeScript 做出决策,避免团队在方向不明的情况下投入大量精力。
评估候选人
区分真正的类型纪律,与仅为满足编译器而添加的类型的检验方式。
为一份真正棘手的数据设计出色的类型,比一份框架名称清单更能体现真实思考。
每个人都偶尔会用到它。能说明在哪里以及为什么使用的候选人,比声称从不使用的候选人更可信。
如果他们此前转换过代码库,询问是如何安排顺序的、出了什么问题,以及实际花了多长时间。
询问他们默认会开启哪些严格模式设置,以及在一个快速迭代的早期阶段项目中会放宽哪些设置。
给出一段带类型的短代码,请对方改变其结构。观察他们如何在改动逻辑的同时更新类型,比一份笔试更能说明问题。
无论您是直接在迪拜招聘 TypeScript 开发工程师,还是委托我们在招聘支持中代为完成评估,这些检验方式同样适用。
认证
TypeScript 没有厂商认证,因此应以真实的类型设计来判断候选人。
TypeScript 由 Microsoft 作为开源项目维护,而不是通过认证项目出售,因此这里不存在厂商考试的对应版本。第三方培训机构确实提供课程完成徽章,但那并不是一回事。
一个带有真正实用类型的代码仓库、对一次真实迁移的描述,以及对严格类型是否值得投入有清晰看法,比任何证书都更能说明问题,也更值得在面试中花时间深入追问。
直接解答
在编译阶段增加了类型注解和类型检查,因此一类错误,例如向函数传入形状不对的数据,会在代码运行前就被工具捕获,而不是留给生产环境中的用户发现。代码编译成普通 JavaScript 后,这些类型信息会被移除。
不总是。它的价值会随着代码库和团队规模增大而提升,因为类型在越来越多人接触同一份代码时,能起到文档和安全网的作用。一个短小、生命周期短的脚本可能并不需要这份额外开销。
可以,这正是 TypeScript 明确的设计目标之一,而且可以按文件逐步迁移,而不必一次性全部完成。有迁移经验的 TypeScript 开发工程师会规划好迁移顺序,而不是尝试一次性大规模重写。
许多 JavaScript 开发工程师日常就在写 TypeScript,因为两者有很大程度的重叠。如果您的项目特别需要有大型代码库迁移经验、或擅长设计严格类型系统的人,请在撰写职位简报时说明。
编写类型会增加一小部分前期工作量,但通常会在后期通过更少的运行时 bug 和更安全的重构来回报,尤其是在代码库和团队规模成长到一定程度之后。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。