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

TypeScript 常用知识总结

二、新添功能 类型批注和编译时类型检查 类型推断 类型擦除 接口 枚举 Mixin 泛型编程 名字空间 元组 Await 以下功能是从 ECMA 2015 反向移植而来: 类 模块 lambda 函数的箭头语法...JavaScript 代码可以在无需任何修改的情况下与 TypeScript 一同工作,同时可以使用编译器将 TypeScript 代码转换为 JavaScript。...TypeScript 通过类型注解提供编译时的静态类型检查。 TypeScript 中的数据要求带有明确的类型,JavaScript不要求。 TypeScript 为函数提供了缺省参数值。...TypeScript 引入了命名空间 TypeScript 的优势 静态输入: 静态类型化是一种功能,可以在开发人员编写脚本时检测错误。查找并修复错误是当今开发团队的迫切需求。...会监视输出文件,在它们改变时重新编译。

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

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

    03、在什么场景下你会使用自定义类型,它们在 TypeScript 中是如何定义的? 答案:当我们有复杂的结构或重复的模式时,使用 type 关键字或接口定义的自定义类型是有益的。...17、如何将 TypeScript 与 React 这样的框架集成? 答:要将 TypeScript 与 React 集成,可以使用 .tsx(TypeScript 与 JSX)文件。...18、命名空间在 TypeScript 中起什么作用,它们仍然相关吗? 答案:TypeScript 中的命名空间是一种对相关代码进行分组的方法,它们有助于避免全局命名空间中的命名冲突。...然而,随着 ES6 模块的兴起,它提供了一种更加标准化和精细的方式来组织和封装代码,命名空间的相关性在许多现代 TypeScript 项目中已经减弱。...28、讨论 TypeScript 中声明合并的工作原理。 答:声明合并是指编译器将多个同名的声明合并到一个定义中。

    1K30

    Typescript学习笔记,从入门到精通,持续记录

    内置了所有js、dom对象,核心库类型定义文件:https://github.com/Microsoft/TypeScript/tree/main/src/lib 命名空间 使用 namespace 关键字定义命名空间...,可以在命名空间内部定义变量、函数表达式、函数声明、接口和 类等值。...var add = function (x: number, y: number) { return x + y } } 引用外部文件的命名空间内的成员时,需要export指定命名空间 exprot...与 import 的区别是,当且仅当在以下几个场景下,我们才需要使用三斜线指令替代 import: 当我们在书写一个全局变量的声明文件时,在全局变量的声明文件中,是不允许出现 import, export...故当我们在书写一个全局变量的声明文件时,如果需要引用另一个库的类型,那么就必须用三斜线指令 当我们需要依赖一个全局变量的声明文件时,当我们需要依赖一个全局变量的声明文件时,由于全局变量不支持通过 import

    2K50

    TS 进阶 - 实际应用 01

    这些类型声明就像在 TypeScript 中的类型标注一样,会存放特定的类型信息,同时由于它们并不具有实际逻辑,可以很方便使用类型声明来进行兼容性比较、工具类型的声明与测试等。...声明文件中不包含实际的代码逻辑,只做一件事:为 TypeScript 类型检查与推导提供额外的类型信息,而使用的语法仍然是 TypeScript 的 declare 关键字。...# 命名空间 命名空间就像一个模块文件一样,将一组强相关的逻辑收拢到一个命名空间内部。...命名空间的使用类似于枚举,命名空间内部实际上就是一个独立的代码文件,其中的变量需要导出以后,才能访问。 命名空间的作用也是实现简单的模块化功能。...,命名空间也可以进行合并,但需要通过 三斜线 指令来声明导入: // animal.ts namespace Animal { export namespace ProtectedAnimals {

    91910

    这 6 个 TS 新特性经常用到,用了之后我再也离不开它!

    这个简写语法做了很多: 声明了一个构造函数参数及其类型 声明了一个同名的公共属性 当我们 new 出该类的一个实例时,把该属性初始化为相应的参数值 空值合并 ??...私有类字段 TypeScript 3.8 将支持 ECMAScript 私有字段,千万别和 TypeScript private 修饰符 混淆。...用private关键字声明的 TypeScript 字段将在编译后的JavaScript代码中成为常规字段。另一方面,私有类字段在编译后的代码中仍然是私有的。...试图在运行时访问私有类字段将导致语法错误。我们也使用浏览器开发工具也检查不了私有类字段。 有了私有类字段,我们终于在JavaScript中得到了真正的隐私。...命名元组类型(Labeled tuple types) 命名元组类型适需要 TypeScript 4.0及以上版本才能使用,它极大的改善了我们的开发体验及效率,先来看一个例子: type Address

    63820

    声明合并_TypeScript笔记16

    ) 因此,可以把声明分为 3 类: 会创建命名空间的声明:创建一个用点号(.)来访问的命名空间名 会创建类型的声明:创建一个指定“形状”的类型,并以给定的名称命名 会创建值的声明:创建一个值,在输出的...JavaScript 中也存在 具体的,在 TypeScript 的 7 种声明中,命名空间具有命名空间和值含义,类与枚举同时具有类型和值含义,接口与类型别名只有类型含义,函数与变量只有值含义: Declaration...类似于接口,多个同名命名空间也会发生成员合并,特殊之处在于命名空间还具有值含义,情况稍复杂一些 命名空间合并:各(同名)命名空间暴露出的接口进行合并,同时单个命名空间内部也进行接口合并 值合并:将后声明的命名空间中暴露出的成员添加到先声明的上...、函数及枚举的合并 除了能与其它命名空间合并外,命名空间还能与类、函数以及枚举合并 这种能力允许(在类型上)扩展现有类、函数与枚举,用于描述 JavaScript 中的常见模式,比如给类添加静态成员,给函数添加静态属性等等...class AlbumLabel { } } 与命名空间之间的合并规则一致,所以要暴露出class AlbumLabel,允许其它声明中的成员访问 与函数合并 类似于命名空间与类的合并,与函数合并能够给现有函数扩展静态属性

    1.1K10

    巧妙利用TypeScript模块声明帮助你解决声明拓展

    所以当我们将 jQuery.d.ts 放到项目中时,其他所有 *.ts 文件就都可以获得 jQuery 的类型定义了。\n\n> 当然,上边我们提过到关于 tsc 文件的编译范围。...比如:\n\n\n \n\n可以看到上图的右边,此时当我们使用 myLib 时, TS 可以正确的识别到他是 myLib 的命名空间 。...\n\n但是需要注意的是,无论哪种声明合并必须遵循合并的属性的类型必须是唯一的,比如:\n\nts\ninterface Props {\n name: string;\n}\n// 后续属性声明必须属于同一类型...axios 全局命名空间声明,同时在左边的文件中我们使用了 axios.Props 类型。...\n\n其实本质上就是相同命名空间内的接口合并,当然我们可以利用 declare 声明合并达到更多的效果。后续我们会详细提到。

    1.4K30

    快速学习TypeScript——模块

    这里的对象一词指的是类,接口,命名空间,函数或枚举 若使用export =导出一个模块,则必须使用TypeScript的特定语法import module = require("module")来导入此模块...如我们之前提到的,模块不会像全局命名空间对象那样去 合并。 推荐的方案是 不要去改变原来的对象,而是导出一个新的实体来提供新的功能。 假设Calculator.ts模块里定义了一个简单的计算器实现。...当初次进入基于模块的开发模式时,可能总会控制不住要将导出包裹在一个命名空间里。...模块具有其自己的作用域,并且只有导出的声明才会在模块外部可见。 记住这点,命名空间在使用模块时几乎没什么价值 在组织方面,命名空间对于在全局作用域内对逻辑上相关的对象和类型进行分组是很便利的。...通过将类型有层次地组织在命名空间里,可以方便用户找到与使用那些类型。 然而,模块本身已经存在于文件系统之中,这是必须的。 我们必须通过路径和文件名找到它们,这已经提供了一种逻辑上的组织形式。

    1.2K10

    TypeScript在项目开发中的应用实践体会

    独乐乐不如众乐乐,本篇文章就从开发的角度来聊聊,探讨下Typescript在真实项目中开发的实践心得和开发体验。 当你看完文章时,我建议先思考团队是否需要Typescript。...declare function 用来声明全局方法(函数) declare class 用来声明全局类 declare namespace 用来声明命名空间 declare module 用来声明模块...那么,我如何将类型提供给引入方呢? 首先,知道index.js导出是一个对象,那么declare const一个类型出来,然后通过export = config的形式对导出进行声明。...在实例中当我们调用.name的时候,其实本身就是调用了其get的方式,而设置值时,则是调用set方法, 需要注意的是,._name值也输出了,但是TypeScript会进行提示你....创建API命名空间 绝大多数数据,都是存放在API的命名空间当中。它的目录如下: -- index.d.ts -- api1.d.ts -- api2.d.ts -- api3.d.ts ...

    2.9K60

    TS中的命名空间合并

    对于里头的函数成员来说,每个同名函数声明都会被当成这个函数的一个重载,当接口 A与后来的接口 A合并时,后面的接口具有更高的优先级 今天要讲的内容也是TS中的声明合并,但这次是命名空间相关的合并 正文...下面会一一讲述 同名的命名空间之间的合并 与接口合并相类似,两个或多个同名的命名空间也会合并其成员 那具体怎么合并呢 对于同名的命名空间之间的合并,记住一下4点: 里头模块导出的同名接口会合并为一个接口...Animals,最终合并为一个命名空间,而且结果是三个没有冲突的东西,直接混合在一起了 命名空间和其他类型的合并 命名空间可以与其它类型的声明进行合并,比如与类和函数,比如和枚举类型 合并同名的命名空间和类...好让合并的类能访问 } 复制代码 命名空间和类的合并,结果是一个类并带有一个内部类 合并同名的命名空间和函数 除了上述的内部类的模式,你在JavaScript里,创建一个函数稍后扩展它增加一些属性也是很常见的...TypeScript使用声明合并来达到这个目的并保证类型安全 例如官方的一个例子: function buildLabel(name: string): string { return buildLabel.prefix

    1.6K00

    从JavaScript迁移到TypeScript,类型声明文件自动生成与中心化管理的实践

    对于变量名的转化,有三个工具是将Protobuf文件里的蛇形命名转化为驼峰命名。...AsObject 指的是有一类工具转化TypeScript包的语法中,以命名空间 namespace 的形式为主,对于空间本身定义成一个 AsObject 对象,命名空间可以有效的阻隔重名问题,但是每个类型在调用的过程中就需要添加...去每个服务下进行版本比较,拉取远端当前服务的最新版本与现在库里的版本比对,当不匹配时,说明当前代码仓库下的版本有所更新,需要调用 npm publish发新包。...因此需要对于生成的文件名进行重复检测和重新命名,使用其所在的Protobuf文件名来区分。...其命名规则是以 x.y.z 的形式: X 表示主版本号,当 API 兼容性变化时,X 递增 Y 表示次版本号,当存在不影响兼容性的功能增加时,Y 递增 Z 表示修订号,当存在不影响兼容性的 Bug 修复时

    1.5K40

    TypeScript超详细入门教程(上)

    ,那这个时候你可能会看到如下这种错误提示: 枚举声明只能与命名空间或其他枚举声明合并 正如你看到的,这里这个错误,是因为你在同一个文件不同地方、或者不同文件中,定义了相同名称的值,而由于TypeScript...的声明合并策略,他会将同名的一些可合并的声明进行合并,当同名的两个值或类型不能合并的时候,就会报错;或者可以合并的连个同名的值不符合要求,也会有问题。...关于声明合并和哪些声明可以合并,以及声明需要符合的条件等我们会在后面章节学到。这里你只要知道,类似于这种报错中提到“声明合并”的或者无法重新声明块范围变量,可能都是因为有相同名称的定义。...数字枚举 我们先来通过数字枚举的简单例子,来看下枚举是做什么的: enum Status {// 这里你的TSLint可能会报一个:枚举声明只能与命名空间或其他枚举声明合并。...因为往往我们将一类值整理为一个枚举值的时候,它们的特点是相似的。

    4.2K41

    TypeScript 官方手册翻译计划【十三】:模块

    这意味着在一个模块中声明的变量、函数和类等在模块外面是不可见的,除非使用其中一种导出方式将它们显式导出。...在一个脚本文件中声明的变量和类型会位于共享的全局作用域中,而且通常情况下,你会使用 outFile 编译选项将多个输入文件合并为一个输出文件,或者使用 HTML 文件中的多个 标签去(...TypeScript 中的模块 在 TypeScript 中编写基于模块的代码时,有三件主要的事情需要考虑: **语法:**我想要使用什么语法去进行导入和导出?...TypeScript 命名空间 TypeScript 有自己的模块格式,名为“命名空间”,它比 ES 模块标准出现得要早。...虽然该语法还没有被弃用,但鉴于 ES 模块已经拥有了命名空间的大部分特性,我们推荐你使用 ES 模块来跟 JavaScript 保持一致。在命名空间的参考章节中,你可以了解到更多相关信息。

    1.1K20

    webpack打包typescript

    在一个新的 TypeScript 文件中写下代码时,它处于全局命名空间中,使用全局变量空间是危险的,因为它会与文件内的代码命名冲突 所以可以使用import或者export,在当前文件中创建一个本地作用域...// 使用export 在当前文件中创建一个本地作用域, 防止变量冲突 export { } 但是当我使用命令tsc tsc05.ts -w运行生成一个js文件时,使用标签导入进html...我之前运行生成js时使用的都是tsc命令直接生成的,但是在有些情况下,生成的js文件直接引入浏览器中是不支持的,所以平时的练习可以使用,如果到正式项目中最好还是使用webpack等打包工具进行打包生成...使用全局安装的typescript时可以会出现错误 “ Could not load TypeScript..../TypeScript/') //获取输出路径 }, mode: 'development', // 整个mode 可以不要,模式是生产坏境就是压缩好对,这里配置开发坏境方便看生成对代码

    2.2K00
    领券