TypeScript 强大的类型系统使得开发者能够更轻松地编写可维护、可扩展的代码。本文将详细介绍 TypeScript 中的基础类型,包括原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型。...原始类型在 TypeScript 中,有以下几种原始类型:数字类型数字类型用于表示整数或浮点数。可以使用 number 关键字来声明数字变量。...例如:enum Color { Red, Green, Blue,}let color: Color = Color.Green;在枚举类型中,每个枚举成员都有一个与它关联的数字值,默认从 0 开始...类型推断和类型断言TypeScript 具有强大的类型推断能力,它可以根据上下文自动推断变量的类型。例如,如果我们在定义变量时直接赋值,TypeScript 可以推断出变量的类型。...总结本文详细介绍了 TypeScript 的基础类型,包括原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型等方面。
没有空洞的数组往往表现得更好 在大多数编程语言中,数组是连续的值序列。在 JavaScript 中,Array 是一个将索引映射到元素的字典。...密集数组往往表现更好,因为它们可以连续存储(内部)。一旦出现了空洞,内部表示就必须改变。我们有两种选择: 字典。查找时会消耗更多时间,而且存储开销更大。 连续的数据结构,对空洞进行标记。...在某些引擎中,例如V8,如果切换到性能较低的数据结构,这种改变将会是永久性的。即使所有空洞都被填补,它们也不会再切换回来了。...关于 V8 是如何表示数组的,请参阅Mathias Bynens的文章“V8中的元素类型”【https://v8.dev/blog/elements-kinds】。...所以操作这个数组时应该比用构造函数创建的更快。不过 创建 数组的速度比较慢,因为引擎可能需要随着数组的增长多次重新分配连续的内存。
这与常规数组形成对比,常规数组只知道元素的类型,而不知道顺序或计数。 07、在 TypeScript 中将属性标记为可选时,使用什么语法?你为什么要这样做? 答案:在 TypeScript 中,?...它对于确保在使用配置对象或在组件或函数之间传递数据等场景中的不变性特别有用。 11、TypeScript 中的可区分联合有什么用处?...答案:可区分联合(也称为标记联合)是一种结合了联合类型、文字类型和类型保护的模式。 当一个对象可以有多个形状但共享一个公共属性(通常是文字类型)时,可以使用它们,该属性可用于缩小其确切形状。...公共属性(通常称为“鉴别器”)允许我们在联合内的类型之间安全地切换,从而更轻松地使用此类对象。 12、继承在 TypeScript 中如何发挥作用?...使用只读数组可确保数组在创建后无法修改,这对于确保数据不变性特别有用,例如在函数或组件之间传递数据时。 16、TypeScript 中的 never 类型意味着什么?
通过使用可区分联合功能。我们将创建一个名为 Vehicles 的枚举并将其用作属性值。...让我们创建一个方法来将任何定义的类型添加到数组中: function addItem(item: string, array: string[]) { array = [...array, item...——TypeScript 的文档 最重要的一点是这些数组的值长度是固定的。...标签将有助于使我们的代码更具可读性和可维护性。 请注意,使用标记元组时有一个重要规则:标记元组元素时,元组中的所有其他元素也必须被标记。 4、映射类型 什么是映射类型?...映射类型建立在索引签名的语法之上,用于声明尚未提前声明的属性类型。” — TypeScript 的文档 总而言之,映射类型允许我们基于现有类型创建新类型。
,占据空间小,大小固定,属于被频繁使用的数据,所以存储在栈中;引用数据类型:存储在堆(heap)中的对象,占据空间大,大小不固定,如果存储在栈中,将会影响程序运行的性能。...引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址,当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后,从堆中获得实体。...Object,所以值类型和引用类型最终都指向 Object,所以在TypeScript中Object他包含所有类型。...123//等等,就不写了,跟Object一样//补充--字面量模式//这个虽然可以赋值任意类型,赋值结束后,是没办法进行一个修改和增加的操作的数组类型(TS -- 4)普通的声明方式//类型加中括号let...注:不是优先于构造函数执行,而是依托于构造函数,如果不创建对象就不会执行构造代码块普通代码块和构造代码块的区别在于,构造代码块是在类中定于的,而普通代码块是在方法体中定义的,执行顺序和书写顺序一致。
g 在项目中创建项目配置文件 tsconfig.json npx --package typescript tsc --init # 如果已经全局安装 TypeScript tsc --init...数组与元组层面也有只读的修饰 不过只能将整个数组或元组标记为只读,不能想对象标记特定属性 一旦被标记只读,那被标记的数组或元组类型上,将不再有 push、pop 等方法 本质是只读数组或元组的类型实际上变成了...在 TypeScript 中,symbol 类型并不具有这一特性,多个具有 symbol 类型的对象,它们的 symbol 类型指的都是 TypeScript 中的同一个类型。...在 TypeScript 中,要引用已创建的 unique symbol 类型,需要使用类型查询操作符 typeof,如 typeof sym1。...# void 类型 在 TypeScript 中,一个没有返回值(即没有调用 return 语句)的函数,其返回值类型应该被标记为 void 而不是 undefined,尽管它的实际值就是 undefined
尽管如此,类型检查器在任何给定位置都为 command 变量使用最具体的类型 在分配了字符串 “pwd” 之后,command 变量就不可能是字符串数组(联合类型中惟一的其他选项)。...在分配了字符串数组 ["ls", "-la"] 之后,command 变量不再被视为字符串,现在它是一个字符串数组,所以对 join 方法的也就能调用了。...严格的 Null 检查 当与可空类型一起使用时,基于控制流的类型分析尤其有用,可空类型使用包括 null 或undefined 在联合类型中的表示。...在严格的 null 检查模式下,undefined 的类型会自动添加到可选属性的联合类型中,因此我们不必显式将其写出。 明确赋值分析 基于控制流的另一个新特性是明确赋值分析。...其思想是确保每个不可空的局部变量在使用之前都已正确初始化。 只读属性 在 TypeScript 2.0 中,readonly 修饰符被添加到语言中。
ArkUI开发框架的整体架构 image.png ArkTS的基础类型 ArkTS的基础类型和ts的大致基本相同 布尔值 TypeScript中可以使用boolean来表示这个变量是布尔值,可以赋值为true...TypeScript支持以下两种方式声明数组: 第一种,可以在元素类型后面接上],表示由此类型元素组成的一个数组:第二种方式是使用数组泛型,Array。...那么我们可以使用 unknown类型来标记这些变量。...let u: undefined = undefined; let n: null = null; 联合类型 联合类型 (Union Types) 表示取值可以为多种类型中的一种。...可选参数 在TypeScript里我们可以在参数名旁使用(?)
如果你在编写中型和大型的web应用程序,TypeScript很有用。注释变量、对象和函数在应用程序的不同部分之间创建了契约。 例如,假设我是一个在屏幕上显示格式化日期的组件的作者。...这很好,因为错误是在开发过程中捕获的,而不是隐藏在代码库中。 2. 约束 props 在我看来,React从TypeScript获得的最大好处是支持类型。 输入React组件通常需要两个步骤。...2.2 children prop children是React组件中的一个特殊prop:当组件被渲染时,它保存了开始和结束标记之间的内容: children在React环境中全局可用的类型)。...这就是为什么ShowText函数的返回类型是一个联合JSX.Element。 总结 React组件可以从TypeScript中受益匪浅。 给组件规定类型对于验证组件的支持非常有用。
; // T is readonly ["a", "b", "c"] fnGood(["a", "b" ,"c"]); 但请记住,const 修饰符仅影响在调用中编写的对象、数组和原始表达式的推断,因此不会...所有枚举都是联合枚举 在 TypeScript 5.0 中,所有枚举现在都被视为联合枚举。 联合枚举为使用枚举值提供了更好的类型安全性和改进的人体工程学。...5.0 通过为每个计算成员创建唯一类型,设法将所有枚举变成联合枚举。...JSDoc 中的@satisfies 支持 TypeScript 5.0 中新的@satisfies JSDoc 标记使您能够指定函数实现满足特定接口。...JSDoc 中的@overload 支持 TypeScript 5.0 添加了对 @overload JSDoc 标记的支持,允许您在 JavaScript 代码中为单个实现定义多个函数签名。
; age = 17; age = '17'; TypeScript 中的数组 在 TypeScript 中,你可以定义数组包含的数据类型: let ids: number[] = [1, 2, 3,...中可以定义一种特殊类型的数组:元组(Tuple)。...在 TypeScript 中,泛型用于描述两个值之间的对应关系。在上面的例子中,返回类型与输入类型有关。我们用一个泛型来描述对应关系。...中的类型收窄 在 TypeScript 中,变量可以从不太精确的类型转移到更精确的类型,这个过程称为类型收窄。...create react-app my-app --template typescript 在 src 文件夹中,我们现在可以创建带有 .ts (普通 TypeScript 文件)或 .tsx (带有
在下面的例子中,一个数组是由两个可扩展字符串字面量类型的变量创建的: const http = "http"; // Type "http" (可扩展) const https = "https"; /...} } 更好地检查表达式的操作数中的 null/undefined 在TypeScript 2.2中,空检查得到了进一步的改进。TypeScript 现在将带有可空操作数的表达式标记为编译时错误。...注意:包含null或undefined的联合类型只会出现在--strictNullChecks模式中,因为常规类型检查模式下null和undefined在联合类型中是不存在的。...在函数体中,咱们创建并返回一个派生自Base的新类。这种语法乍一看可能有点奇怪。咱们创建的是类表达式,而不是类声明,后者是定义类的更常用方法。...继承多个基类在 JS 中不行的,因此在 TypeScript中也不行。
在 TypeScript 中,我们支持和 Javascript 几乎一样多的类型,并且新增了实用的枚举类型。...TypeScript 除了支持ECMAScript 2015中的十六进制和十进制外,还支持二进制和二进制类型。...Array 数组 TypeScript 和 Javascript 一样,允许你使用数组。数组类型的定义可以有两种写法。...'string' 和 'number' 都有 toString 方法 x[6] = true; // 错误,布尔值不是 (string | number) 中的一种 联合类型是更高级的议题,我们会在后续的章节中介绍...enum Color {Red, Green, Blue}; var c: Color = Color.Green; 在默认情况下,枚举类型会从数字0开始标记它的元素。
在一个新的文件夹中创建一个新的节点项目: mkdir typescript-tutorial && cd $_ npm init -y 然后用以下方式安装TypeScript: npm i typescript...json在项目文件夹中。让我们为TypeScript生成一个配置文件: npm run tsc -- --init 如果一切顺利,您将得到“消息TS6071:成功创建tsconfig。...我们真正想要的是将"input"标记为一个数组,也许是一个字符串数组? 为此,您有两种选择。...但在其他人的代码中,您可能也会注意到关键字类型。 显然,interface和type在TypeScript中可以互换使用,但它们在很多方面是不同的。这让TypeScript初学者感到困惑。...| string; name: string; } 例如,通过类型别名,您可以提取自定义的联合类型,并创建名为Authenticated的标签: type Authenticated = boolean
代码中最常见的一些数据类型,同时也会解释这些类型在 TypeScript 中的对应描述方式。...类型注解总是跟在要声明类型的东西后面。 不过,在大多数情况下,注解并不是必需的。TypeScript 会尽可能地在你的代码中自动进行类型推断。...toUpperCase()); } 联合类型 TypeScript 的类型系统允许你基于既有的类型使用大量的运算符创建新的类型。...有时候,联合类型的所有成员可能存在共性。举个例子,数组和字符串都有 slice 方法。...与大多数的 TypeScript 特性不同,枚举不是在类型层面添加到 JavaScript 中的,而是添加到语言本身和它的运行时中。
中,数组类型有两种表达方式。...一种是在元素类型后面加上 [],表示由此类型元素组成的一个数组。...Enum Enum是一种特殊的类型,它可以更容易地处理一组有名字的常量。在TypeScript中,enum的默认起始值是0,然后每个成员的值都会依次增加。...new Error(message); } void 在TypeScript中,void类型用于表示没有返回值的函数的返回类型。...联合类型在TypeScript中非常常用,因为它们可以帮助你编写更灵活的代码。 交叉类型(Intersection Types) 交叉类型是将多个类型合并为一个类型。
可是,在数组的 map 方法中,TypeScript 不能保证 url 的类型已经窄化为 URL,因为他无法确定在回调函数被执行的当下,url是否仍然是 URL 对象,这是因为在函数的闭包中,变量可能会被之后的代码改变...但其实在这个例子中,这个箭头函数肯定是在对 url 进行类型变更后被创建的,并且对 url 的类型变更是最后的赋值操作,所以 url 在这个函数中的类型就是我们赋值的类型。...函数需要为每个不同的组制作一个“键”,然后 Object.groupBy 使用这个键来创建一个对象,其中每个键都映射到一个包含原始元素的数组中。...在 TypeScript 的早期版本中,当我们使用条件类型(就是那种基于条件分支决定类型的表达式)时,默认的行为有时会显得有些草率。...它会更谨慎地分析所有可能的情况,如果不能确定 T 总是或者永不扩展至 Foo,它会为条件类型创建一个联合类型来表示所有可能性。
这篇笔记,主要记录了自己最近在 typescript 实践中的经验。总结了常见的用法。...文章出处:xxoo521.com 联合类型与交叉类型 联合类型:使用|作为标记,常用于对象类型是多种类型之一。 交叉类型:使用& 作为标记,创建新类型,拥有多个类型的所有定义。...b: Student | People = a; console.log(b.name); // console.log(b.age) // error:编译错误 数组、元祖与枚举 数组的定义,可以使用范型...它的目的是为了提供编译器进行更多种类的类型判断,而不需要使用“类型断言”技术。在定义函数重载的时候,要按照「精确 => 宽泛」的级层来定义函数。...typescript 的编译器中,类型定义是可以导出的。
TypeScript在js开发者中这么受喜爱的原因是:在你运行代码前,添加到javascript中的类型有助你发现错误(代码)。TypeScript编译器提供的错误可以很好的引导你如何修复代码错误。...为了快速验证设置生效,你可以创建一个测试的TypeScript文件,然后在命令行中运行tsc,之后查看下TypeScript文件旁边是否生成了JavaScript文件。...array TypeScript中有两种书写数组类型的方式。第一种是[]后缀在需要查找的数组元素类型。...传递给fillArray函数的第二个参数是一个字符串,因此创建的数组将其所有元素设置为具有字符串类型。 应该注意的是,按照惯例,单个(大写)字母用于泛型类型(比如:T或K)。...在类型可以是多种类型之一的情况下,使用|分隔符隔开不同类型的选项来使用联合类型。
"; (4)空值类型 JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数。...TypeScript—数组类型 在 TypeScript 中,数组类型有多种定义方式,比较灵活。...lastIndexOf() 返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。 map() 通过指定函数处理数组的每个元素,并返回处理后的数组。...TypeScript—联合类型 联合类型(Union Types)表示取值可以为多种类型中的一种。...,在子类中也是不允许访问的,这里就不演示了。
领取专属 10元无门槛券
手把手带您无忧上云