在当今的 Web 开发世界中,TypeScript 作为一种强大的工具为自己赢得了一席之地,它弥补了 JavaScript 的灵活性和静态类型语言的鲁棒性之间的差距(至少在 JavaScript 实现自己的类型之前)。
TypeScript 是 Microsoft 开发的JavaScript 的开源超集,用于在不破坏现有程序的情况下添加附加功能。
英文 | https://www.digitalocean.com/community/tutorials/how-to-use-basic-types-in-typescript
处理模块化代码的方式很多,JavaScript 在这方面有着悠久的历史。TypeScript 诞生于 2012 年,对许多模块化方案也实现了支持。但随着时间的推移,社区和 JavaScript 规范在一种名为 ES 模块(或者称为 ES6 模块)的方案上达成了共识。你可能听说过它的 import/export 语法。
JavaScript 处理代码的模块化有很多种办法,类似于AMD CommonJS UMD 等等。TypeScript 从2012年开始,已经支持了大部分的格式,但随着时间的推移,社区和JavaScript规范已经融合到一种称为ES模块(或ES6模块)的格式上。你可能知道import/export语法。
is 是 TypeScript 中用于类型断言的关键字,它用于在运行时对值的类型进行判断。通过使用 is,你可以编写自定义的类型保护函数,帮助 TypeScript 编译器理解代码中变量的类型。下面是 is 的语法和一个简单的使用案例:
在 TypeScript 中,type 关键字用于创建类型别名(Type Aliases)。类型别名允许你为一个具体的类型或类型组合定义一个名称,以便在代码中重复使用。
TypeScript 与 ECMAScript 2015 一样,任何包含顶级 import 或者 export 的文件都被当成一个模块
在 TypeScript 中,as const 是一种类型断言的用法,它用于告诉编译器将某个位置的类型视为一个常量(const)类型。这在 TypeScript 的类型守卫和类型细化中非常有用,尤其是在处理字面量类型或确保某个位置的值不会被修改时。
之前的文章,我们已经介绍了 TypeScript 的类型收窄,本文我们将介绍 TypeScript 的类型拓宽。在一些情况下,TypeScript 从上下文推断类型,减少了程序员显式指定明显类型的需要。例如:
如果 padding 是 number 类型,那么它将作为 input 前缀空格的个数,如果它是 string 类型,那么它将直接作为 input 的前缀。现在我们尝试实现一下相关的逻辑,假定要给 padLeft 传入 number 类型的 padding 参数。
as const 是 TypeScript 中的一个用于修饰符,它可以被用来修改类型推断的行为。
TypeScript 2.2 引入了被称为 object 类型的新类型,它用于表示非原始类型。在 JavaScript 中以下类型被视为原始类型:string、boolean、number、bigint、symbol、null 和 undefined。
TypeScript 诞生已久,优缺点大家都知晓,它可以说是JavaScript静态类型校验和语法增强的利器,为了更好的代码可读性和可维护性,我们一个个老工程都坦然接受了用TypeScript 重构的命运。然而在改造的过程中,逐步意识到TypeScript这门语言的艺术魅力
但为了确保文件内容只含有标准的 JavaScript 代码,.js文件按照 ES 语法规范来检查,因而不允许出现 TypeScript 类型标注:
这听起来是不是很耳熟:你想写一个小型脚本,不管是为页面、命令行工具,还是其他什么类型。你从JavaScript开始,直到你想起写代码时没有类型是多么痛苦。所以你把文件从.js重命名为.ts。然后意识到你已经打开了一个麻烦的玩意儿。
在进行前端技术面试的时候,我们经常会遇到TypeScript 的一些面试题,因此,今天这篇文章,我整理汇总了40道关于TypeScript 的基础知识的面试题。
这是第 84 篇不掺水的原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:编写高质量可维护的代码:Awesome TypeScript https
几年前,彭博工程公司决定采用 TypeScript 作为一等语言。本文分享了我们在这一旅程中学到的一些见解和教训。
当比较 TypeScript 和 JavaScript 时,我们需要牢记所有合适的 JavaScript 代码同样也是合法的 TypeScript 代码。TypeScript 可以被视为 JavaScript 的一个子集。
cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module.
symbol 是 JavaScript 和 TypeScript 中的原始数据类型,可用于对象属性。与 number 和 string 相比,symbol 具有一些独特的功能,使它脱颖而出。
添加特殊值的一种方法是创建一个新类型,该类型是一些特殊值的基本类型的超集,这些特殊值称为哨兵。
在TypeScript中,接口(Interface)用于定义对象的结构和类型。它是一种约定,用于描述对象应该具有哪些属性和方法。接口可以提高代码的可读性、可维护性和可重用性。
上一篇更好的类型推断的文章中,解释了 TypeScript 如何用 const 变量和 readonly 属性的字面量始化来推断字面量类型。这篇文章继续讨论这个,扩展和非扩展字面量类型之间的区别。
image.png 基于控制流的类型分析 TypeScript 官网总结了基于控制流的类型分析: TypeScript 2.0 实现了对局部变量和参数的控制流类型分析。以前,对类型保护进行类型
Etsy 的 Web 平台团队在过去几年中花费了大量时间来更新我们的前端代码。仅在一年半以前,我们才将 JavaScript 构建系统现代化,以实现更高级的特性,比如 箭头函数 和 类,从 2015 年起,它们被添加到了这个语言中。尽管这个升级意味着我们对代码库的未来验证已经完成,并且可以编写出更加习惯化、更可扩展的 JavaScript,但是我们知道还有改进的空间。
在 TypeScript 中,命名空间是一种将代码封装在一个特定名称下的方式,以防止全局作用域污染并避免命名冲突。命名空间在 TypeScript 中非常重要,因为它们为模块化和封装提供了灵活的选项。
洛伊安妮·格罗纳女士所著的《学习JavaScript数据结构与算法》第三版于2019年的5月份再次刊印发行,新版内容契合当下,实为JavaScript开发人员的必备之佳作。有幸重读此版,与诸君分享共勉。
TypeScript 1.8 引入了字符串字面量类型,用于将变量限制为可能的字符串值的有限集。在 TypeScript 2.0 中,字面量类型不再局限于字符串。以下字面量类型已添加到类型系统中:
虽然简介这一部分可能有人会觉得没必要,但是我觉得还是有必要简单的写一下的。我们以后既然要经常用它,当然得从认识它开始啦!不想看就往下滑咯。
我之前写了一篇《如何把 Node.js 项目从 JavaScript 迁移到 TypeScript 的指南》。指南的阅读量超过了七千,不过其实当时我对 JavaScript 和 TypeScript 的了解并不深入,把重心更多地放到特定工具上,而没怎么从全局着手。最大的问题是我没有提供迁移大型项目的解决方案。
大家好,我是 ConardLi,在过去的几年里 TypeScript 变得越来越流行,现在许多工作都要求开发人员了解 TypeScript,各大厂的大型项目基本都要求使用 TypeScript 编写。
博主在本文中探讨了编程界常见的问题,即如何区分静态类型和动态类型,强类型和弱类型。他指出,由于这些概念本身没有明确的定义,导致人们很难就此达成一致共识。然而,如果按照已有的共识来界定这些概念,就能得出一些明确的答案。文章提到了强类型语言和弱类型语言的区别,以及静态类型语言和动态类型语言的区别。在强类型和弱类型的定义中,强类型语言常常会直接出错或编译失败,而弱类型语言会进行隐式转换或产生意料之外的结果。根据这个定义,Python被归类为强类型语言。静态类型语言在编译期确定变量类型,而动态类型语言在运行时确定。根据这个区别,C, C++, C#, Java等被视为静态类型语言,而Python, JavaScript, TypeScript, PHP等被视为动态类型语言。最后,博主表示这种讨论对工程开发的实际意义并不大。
TypeScript 已于 2022.4.08 发布 4.7 beta 版本,你可以在 4.7 Milestone 查看所有被包含的 Issue 与 PR。如果想要抢先体验新特性,执行:
TypeScript 数组有一个根本特征:所有成员的类型必须相同,但是成员数量是不确定的,可以是无限数量的成员,也可以是零成员。
在TypeScript中,接口(Interface)是一种结构化的数据类型系统,它能够明确地定义对象的形状。接口中可以包含方法的签名,但不能包含实现。这样的接口被称为抽象的,因为它们定义了一种结构,但不提供具体的实现。
ESLint 在项目中已经是大家见惯不惯的存在,你可能很厌烦动不动跳出来的 ESLint 报错,也可能很享受经过统一校验的工工整整的代码,无论如何,我的意见是,在稍微正式点的项目中都要有 ESLint 的存在,无论是直接使用简单的 recommend 配置如 extends: ['eslint: recommend'],还是精心研究了一整套适用于自己的规则集,Lint 工具的最大帮助就是保持语法统一,至少项目中的所有 JavaScript 文件应使用统一的单双引号、分号、缩进等风格(仅靠编辑器并不能保证)。
你有没有感觉 TypeScript中可能有一些被低估但却非常有用的工具,你并没有充分利用?的确有,今天我们要重点介绍一个:as const。它虽然沉默却强大,而且非常有力,是一个被低估的功能,但它的力量却强大无比。
TypeScript 最大的优势之一便是增强了编辑器和 IDE 的功能,包括代码补全、接口提示、跳转到定义、重构等。
本文由 IMWeb 首发于 IMWeb 社区网站 imweb.io。点击阅读原文查看 IMWeb 社区更多精彩文章。 1. 前言 2018年Stack Overflow Developer的调研(https://insights.stackoverflow.com/survey/2018/)显示,TypeScript已经成为比JavaScript更受开发者喜爱的编程语言了。 之前我其实对于typescript没有太多好感,主要是认为其学习成本比较高,写起代码来还要多写很多类型声明,并且会受到静态类型检查
最近有一份流传的文档,说是 Deno 将停止在其内部代码中使用 TypeScript。文档中提到了当前开发环境的几个问题,包括了 TypeScript 编译时间、结构和代码管理等。在未来,Deno 的内部代码将使用原生 JavaScript 进行开发。
原文:https://www.toptal.com/react/react-hooks-typescript-example
React v16.8 引入了 Hooks,它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。这些功能可以在应用程序中的各个组件之间使用,从而易于共享逻辑。Hook 令人兴奋并迅速被采用,React 团队甚至想象它们最终将替换类组件。
领取专属 10元无门槛券
手把手带您无忧上云