首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TypeScript 官方手册翻译计划【二】:普通类型

n: number = obj; 当你不想要写一长串类型让 TypeScript 确信某行代码没问题的时候,any 类型很管用。...既然我们已经知道了如何编写基本的类型,是时候开始用一种有趣的方式将它们结合起来了。 定义一个联合类型 第一种结合类型的方式就是使用联合类型。...联合类型由两个或者两个以上的类型组成,它代表的是可以取这些类型中任意一种类型的值。每一种类型称为联合类型的成员。...有时候,联合类型的所有成员可能存在共性。举个例子,数组和字符串都有 slice 方法。...而接口的名字则始终出现在报错信息中 类型别名无法进行声明合并,但接口可以 接口只能用于声明对象的形状,无法为原始类型命名 在报错信息中,接口的名字将始终以原始形式出现,但只限于它们作为名字被使用的时候

2.3K20

深入学习下 TypeScript 中的泛型

在今天的内容中,我们将尝试 TypeScript 泛型的真实示例,并探索它们如何在函数、类型、类和接口中使用。...您还可以使用类型来创建原始类型(例如字符串和布尔值)的别名,这是接口无法做到的。 TypeScript 中的接口是表示类型结构的强大方法。...它们允许您以类型安全的方式使用这些结构并同时记录它们,从而直接改善开发人员体验。 在今天的文章中,我们将在 TypeScript 中创建接口,学习如何使用它们,并了解普通类型和接口之间的区别。...通用接口和类 要创建通用接口,您可以在接口名称之后添加类型参数列表: interface MyInterface { field: T } 这声明了一个接口,该接口具有一个属性字段,其类型由传递给...keyof T 运算符用于返回具有 T 中所有可用属性名称的联合。然后使用 K in 语法指定新类型的属性是返回的联合类型中当前可用的所有属性 T键。

39K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入学习下 TypeScript 中的泛型

    在今天的内容中,我们将尝试 TypeScript 泛型的真实示例,并探索它们如何在函数、类型、类和接口中使用。...在今天的文章中,我们将在 TypeScript 中创建接口,学习如何使用它们,并了解普通类型和接口之间的区别。...这意味着 TypeScript 会将数据识别为具有字符串类型的键和任意类型的值的对象,从而允许您访问其属性。类型参数约束在某些情况下,泛型类型参数需要只允许将某些形状传递给泛型。...}}通用接口/类的一个常见用例是当您有一个字段,其类型取决于客户端代码如何使用接口/类时。...keyof T 运算符用于返回具有 T 中所有可用属性名称的联合。然后使用 K in 语法指定新类型的属性是返回的联合类型中当前可用的所有属性 T键。

    17710

    基于 TypeScript 的 Weex 优化实践

    它有以下特点: 1.始于JavaScript,归于JavaScript TypeScript 从今天数以百万计的 JavaScript 开发者所熟悉的语法和语义中拓生而来,所使用的是通用的 JavaScript...类型是可选的,类型推断让一些类型的注释与你的代码的静态验证有很大的不同。...类型让你能自主定义软件组件之间的接口和洞察现有 JavaScript 库的行为. 3.进阶的JavaScript TypeScript 提供最新的和不断发展的 JavaScript 特性,包括那些来自...这是为了告诉 Typescript 以 .vue 结尾的导入的任何东西都与 Vue 构造函数本身具有相同的形状。...1.减少Bug 1)类型错误 TypeScript 的类型保护、联合类型、类型推导等特性,可以避免发生低级类型错误问题。

    1.9K60

    分享 30 道 TypeScript 相关面的面试题

    随着技术格局的不断发展,对 TypeScript 开发人员的需求也在不断增加,技能要求也有所提升,但如何在面试中让自己脱颖而出呢?...它们如何发挥作用? 答:泛型允许创建灵活且可重用的组件,而无需牺牲类型安全性。它们充当未来类型的占位符,让您可以编写适用于多种类型的函数、类或接口。...11、TypeScript 中的可区分联合有什么用处? 答案:可区分联合(也称为标记联合)是一种结合了联合类型、文字类型和类型保护的模式。...公共属性(通常称为“鉴别器”)允许我们在联合内的类型之间安全地切换,从而更轻松地使用此类对象。 12、继承在 TypeScript 中如何发挥作用?...但是,TypeScript 不支持传统的方法重载(您可以定义多个具有相同名称但参数不同的方法)。 相反,您可以使用可选参数或联合类型来实现类似的功能。

    1K30

    十亿级流量的搜索前端,是怎么做架构升级的?

    又因为各个公司的业务不同,每个公司的前端架构发展都不一样,这里,我会拿百度移动端经典的搜索场景来给大家举例,希望从百度的移动端架构演进过程中,发现一些共性的问题。...△图 4:结果页的目标架构 图 4 中可以看到: 把日志、搜索框、相关搜索、性能打点等独立成单独的模块,有专门的同学来独立维护和迭代; 在前后端之间加了一层渲染层;让业务代码和后端的逻辑分开; 在底层加了...,接受一个字典类型的数据,返回渲染之后的页面内容。...由调用方决定如何组装页面。 △图 7:具体的业务模块的服务端入口文件 如上是业务模块提供方的接口。...五、结语 针对百度搜索引擎在架构演化中遇到的问题,相信在其他领域也会有一些共性的东西。通过百度的解决思路,希望能对正在做前端架构的你有一些启发。

    42010

    让你的TypeScript代码更优雅,这10个特性你需要了解下

    泛型函数的类型推断 在泛型函数中,TypeScript 可以根据传入的参数自动推断出类型。以下是一个简单的泛型函数 identity,它接收一个参数并返回相同的值。...这一特性在处理具有相同属性但不同结构的类型集合时特别有用,使得类型检查更加简洁和准确。下面我们通过一个具体的例子来详细介绍区分联合类型的用法。...Square 和 Rectangle 这两个接口都有一个 kind 属性,用于区分是正方形还是矩形。...区分联合类型是 TypeScript 提供的强大特性,可以帮助你在处理复杂类型集合时进行更精确的类型检查。掌握这一特性,可以让你的代码更加健壮和易于维护。...: string; } TypeScript 会将这两个接口合并为一个,包含所有定义的属性: const user: User = { id: 1, name: "John Doe"

    26910

    十亿级流量的搜索前端,是怎么做架构升级的?

    又因为各个公司的业务不同,每个公司的前端架构发展都不一样,这里,我会拿百度移动端经典的搜索场景来给大家举例,希望从百度的移动端架构演进过程中,发现一些共性的问题。...图 4 图 4 中可以看到: 把日志、搜索框、相关搜索、性能打点等独立成单独的模块,有专门的同学来独立维护和迭代; 在前后端之间加了一层渲染层;让业务代码和后端的逻辑分开; 在底层加了 Node.js...图 6 图 7 展示的是一个具体的业务模块的服务端入口文件,其中 ToptipController 是实现了由 Molecule 提供的控制器接口;这个接口要求提供一个渲染函数,接受一个字典类型的数据,...整个机制的原理很简单,但实际使用中可能还需要引入命名空间、考虑模块版本等问题。 客户端 那么客户端如何运行起来呢?我们也需要把每个模块的浏览器端组件运行起来,困难在于组件之间的依赖和代码共享。...如果性能会比模板引擎的性能差,那么这个项目很可能会夭折。如何去保证页面性能?着重介绍两个优化点。

    67220

    TypeScript 之父简介:TS Anders Hejlsberg: Introducing TypeScript参考资料TypeScript入门指南(JavaScript的超集)

    image.png TypeScript 是 JavaScript 的超集,TypeScript结合了类型检查和静态分析,显式接口。...非常易学和易于理解 语言特性 类 接口 模块 类型注解 编译时类型检查 Arrow 函数 (类似 C# 的 Lambda 表达式) JavaScript 与 TypeScript 的区别 TypeScript...核心TypeScript编译器 语法分析器(Parser): 以一系列原文件开始, 根据语言的语法, 生成抽象语法树(AST) 联合器(Binder): 使用一个Symbol将针对相同结构的声明联合在一起...(例如:同一个接口或模块的不同声明,或拥有相同名字的函数和模块)。...TypeChecker是TypeScript类型系统的核心。 它负责计算出不同文件里的Symbols之间的关系,将Type赋值给Symbol,并生成任何语义Diagnostic(比如:error)。

    2.1K20

    TypeScript手记(六)

    类型推断 这节介绍 TypeScript 里的类型推断。即,类型是在哪里如何被推断的。 基础 TypeScript 里,在有些没有明确指出类型的地方,类型推断会帮助提供类型。...后面的小节,我们会浏览类型推断时的细微差别。 最佳通用类型 有些时候我们需要从几个表达式中推断类型,会使用这些表达式的类型来推断出一个最合适的通用类型。...如果我们一旦检查过类型,就能在之后的每个分支里清楚地知道 pet 的类型的话就好了。 TypeScript 里的类型保护机制让它成为了现实。...字符串字面量类型 字符串字面量类型允许你指定字符串必须具有的确切值。在实际应用中,字符串字面量类型可以与联合类型,类型保护很好的配合。通过结合使用这些特性,你可以实现类似枚举类型的字符串。...但是 TypeScript 的学习不能仅仅靠看官网文档,你还需要动手实践,在实践中你才能真正掌握 TypeScript。

    1K10

    这 5 个 TypeScript 的功能特征,你需要熟悉下

    1、Unions 联合是最基本且易于使用的 TypeScript 功能之一。它们让我们可以轻松地将多种类型合二为一。交集和联合类型是我们组合类型的方法之一。...但是,如果我们想以更强大和动态的方式表达类型/接口,我们需要使用泛型。 2、泛型 使我们的方法/API 可重用的最佳方法是什么?泛型! 这是大多数类型语言中的一项功能。它让我们以更通用的方式表达类型。...]; return array; } 如果我们想为 int 类型创建相同的实用程序怎么办?...它们是一种避免反复定义接口的方法。你可以将类型建立在另一种类型或接口的基础上,从而节省手动工作。 “当你不想重复时,有时一种类型需要基于另一种类型。...我的目标是让你好奇并展示 Typescript 的能力。现在由你来进一步深入研究其中任何一个。 通过尝试逐步采用它们,你将看到你的代码如何变得更整洁、更干净、更易于维护。

    1.3K40

    TS核心知识点总结及项目实战案例分析

    基础类型 TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。...接口 TypeScript的核心原则之一是对值所具有的结构进行类型检查。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。...答案是可以的.但是类接口的定义稍微有点复杂, 我们都知道类是具有两个类型的:静态部分的类型和实例的类型. 当一个类实现了一个接口时,只对其实例部分进行类型检查。...使用第三方类库 在熟悉以上基础知识之后, 我们看一下如何使用支持typescript的第三方类库....在React组件中使用typescript 笔者将在下一篇文章中继续实现该章节, 让大家对实际的typescript开发有一个具体的认识.

    1.7K10

    在 TS 中如何减少重复代码

    接下来,本文将介绍在 TypeScript 项目开发过程中,如何参考 DRY 原则尽量减少重复代码。...那么如何避免出现例子中的重复代码呢?...我们通过成员访问的语法来提取对象中属性的类型,从而避免重复定义接口中相关属性的类型。...,我们还可以使用 typeof 操作符来快速定义该接口类型: type Options = typeof INIT_OPTIONS; 此外,在使用可辨识联合(代数数据类型或标签联合类型)的过程中,也可能出现重复代码...Pick 和 Partial 之外,TypeScript 团队还为我们开发者提供了很多工具类型,可用于减少重复代码和提高开发效率,感兴趣的读者可以阅读本人之前写的 掌握 TS 这些工具类型,让你开发事半功倍

    2.3K40

    细数这些年被困扰过的 TS 问题

    : boolean | EventListenerOptions): void; [index: number]: Window; } 在上面我们声明了两个相同名称的 Window 接口,这时并不会造成冲突...五、如何理解函数重载的作用 5.1 可爱又可恨的联合类型 由于 JavaScript 是一个动态语言,我们通常会使用不同类型的参数来调用同一个函数,该函数会根据不同的参数而返回不同的类型的调用结果: function...所以类中成员方法满足重载的条件是:在同一个类中,方法名相同且参数列表不同。...Object 类型:它是所有 Object 类的实例的类型,它由以下两个接口来定义: Object 接口定义了 Object.prototype 原型对象上的属性; // node_modules/typescript...数字枚举与字符串枚举之间有什么区别 8.1 数字枚举 在 JavaScript 中布尔类型的变量含有有限范围的值,即 true 和 false。

    15.3K73

    《解锁ArkTS模型封装与抽象:代码复用与维护的进阶之道》

    抽象则是提取模型的共性特征,将其归纳为更通用的概念。以图像识别模型为例,不同的图像识别任务,如人脸识别、物体检测等,虽然具体的实现细节有所不同,但都有一些共同的操作,如图像预处理、特征提取等。...通过抽象,我们可以将这些共性部分提取出来,形成通用的模块,使得代码更加简洁、易于理解和维护。 模型封装的关键步骤 定义清晰的接口 在ArkTS中,为模型定义清晰的接口是封装的第一步。...模型抽象的实现策略 提取共性操作 在多个不同的模型中,寻找它们的共性操作是实现抽象的关键。例如,在语音识别和图像识别模型中,都需要对输入数据进行预处理。...基于抽象类或接口构建通用框架 在ArkTS中,可以利用抽象类或接口来构建模型的通用框架。抽象类定义了一组具有共性的方法和属性,但不包含具体的实现,需要子类去实现这些方法。...接口则更加纯粹,只定义方法的签名,不包含任何实现。通过这种方式,我们可以将不同模型的共性部分抽象出来,形成一个通用的框架,然后针对具体的模型类型,实现相应的子类。

    7300

    为什么选择使用 TypeScript ?

    静态类型检查让 TS 在编辑器中披上强类型语言的“马甲”,使得开发者在编码时就可以避免大多数类型错误的情况发生,而开发者要做的就只是声明变量时多写一个符号和一个单词。...TS 在支持与 JS 几乎相同的原始类型之外,还额外提供了枚举(Enum)和元组(Tuple)的支持。...( C# 和 Java 的朋友们让我看到你们的双手好吗) 接口(interface)用于一系列成员的声明,但不包含实现,接口支持合并(重复声明),也可以继承于另一接口。...type 和接口(interface)很相似,type 可以作用于原始类型,联合类型,元组以及其它任何你需要手写的类型,interface 支持合并而 type 不可以。...Creator 中的 TS 组件中的 ccclass 和 property 就是两个装饰器 const { ccclass, property } = cc.

    2.4K30

    【文末送书】Typescript 使用日志

    Typescript 设计目标[1] 我理解的定义:赋予 Javascript 类型的概念,让代码可以在运行前就能发现问题。...抽象类有以下两个特点。 •抽象类不能直接实例化•抽象类中的抽象属性和方法,必须被子类实现 tip 经典问题:抽象类的接口的区别 •抽象类要被子类继承,接口要被类实现。...•抽象类是有规律的,抽离的是一个类别的公共部分,而接口只是对相同属性和方法的抽象,属性和方法可以无任何关联。 抽象类的用法如下。...,实例中的属性和方法会受到类中修饰符的影响,如果是 private 修饰符,那么必须保证两者之间的 private 修饰的属性来自同一对象。...中的高级类型包括:交叉类型、联合类型、字面量类型、索引类型、映射类型等,这里我们主要讨论一下 •联合类型•映射类型 联合类型 联合类型是指一个对象可能是多个类型中的一个,如:let a :number

    2.9K10

    【TypeScript 演化史 — 第七章】映射类型和更好的字面量类型推断

    来看看如何在不使用映射类型的情况下在类型系统中对其进行编码: interface Point { x: number; y: number; } interface FrozenPoint {...Point 接口,咱们还定义了另一个接口FrozenPoint,它与 Point 相同,只是它的所有属性都被使用 readonly 定义为只读属性。...虽然上面的示例可以正确地编译和工作,但它有两大缺点 需要两个接口。除了 Point 类型之外,还必须定义 FrozenPoint 类型,这样才能将 readonly 修饰符添加到两个属性中。...对于希望在应用程序中冻结的每种类型的对象,咱们就必须定义一个包装器函数,该函数接受该类型的对象并返回冻结类型的对象。没有映射类型,咱们就不能以通用的方式静态地使用 Object.freeze()。...在方括号中,使用了 keyof 操作符。keyof T 将 T 类型的所有属性名表示为字符串字面量类型的联合。 方括号中的 in 关键字表示我们正在处理映射类型。

    3.8K40

    为什么选择 TypeScript

    Cocos Creator 中 TS 和 JS 在使用上的区别」 「6. 如何创建 Cocos Creator TS 项目」 「7....静态类型检查 静态类型检查让 TS 在编辑器中披上「强类型语言」的“马甲”,使得开发者在「编码时」就可以「避免大多数类型错误的情况发生」,而开发者要做的就「只是声明变量时多写一个符号和一个单词」。...原始类型 TS 在支持「与 JS 基本相同的原始类型」之外,还额外提供了**枚举(Enum)和元组(Tuple)**的支持。...(Interface) C# 和 Java 的朋友们让我看到你们的双手好吗 「接口用于一系列成员的声明,但不包含实现,接口支持合并(重复声明),也可以继承于另一接口。」...类型别名和接口很相似,「类型别名可以作用于原始类型,联合类型,元组以及其它任何你需要手写的类型」,接口支持合并而类型别名不可以。 类型别名同样也「支持扩展」,并且可以和接口互相扩展。

    1.7K00
    领券