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

TypeScript使用类型别名

在很多打包工具或者使用cli创建项目中都会提供类型别名,例如Vue-cli中使用@可以代表绝对路径src。...但是在使用TypeScript开发Node.js项目中却没有这个选择,当然我们可以在tsconfig.json中设置path参数,但是这个只是路径不报错和有利于路径提示,在ts-node运行时还是会报错...,社区中提供了一个叫typescript-paths插件来解决问题,但是这个插件对增量编译非常不友好(ts在项目大了之后全量编译随便改一点就要等2分钟),对此我们可以使用插件module-alias来解决...1.首先我们依然是在tsconfig.json中设置ts路径别名,这是是可以让ts不报错并且有良好路径提示。...如果你是使用了TS进行项目开发可以结合TS+Node.js进行增量编译这篇文章结合一下进行项目配置

81220

TypeScript: 类型判断-合理使用 is 和 type

TypeScript: Type predicates TypeScript 类型判断--合理使用 is 和 type 这篇文章主要写在使用函数时候确保你参数类型正确规范建议。...写在最前面 最开始写 typescript 最困难就是各种类型判断,最近浏览 jsFeed 时候看到一篇不错文章,然后自己翻译了一下分享给大家。...typescript 类型断言帮助你更好规范你代码类型类型断言一般在函数中使用(work on functions),来确保你函数类型返回正确。...: 使用 is ,这里让我们主动明确告诉 ts ,在 isString() 这个函数参数是一个 string。...虽然is 让 ts 分辨了 unknown 类型和 更多其他类型,但是也让我们类型缩小了范围。为什么啦? 来看一个栗子:让我们来做一个丢色子游戏,当你丢到 6 时候你就赢了。

7.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

TypeScript函数类型

{ return x+y; }; 注意不要混淆了 TypeScript => 和 ES6 中 =>。...在 TypeScript 类型定义中,=> 用来表示函数定义,左边是输入类型,需要用括号括起来,右边是输出类型。...用接口定义函数形状 我们也可以使用接口方式来定义一个函数需要符合形状: interface SearchFunc{ (source:string,subString:string):boolean...这时,我们可以使用重载定义多个 reverse 函数类型: function reverse(x: number): number; function reverse(x: string): string...在编辑器代码提示中,可以正确看到前两个提示。 注意,TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果有包含关系,需要优先把精确定义写在前面。

2K30

如何在TypeScript使用类型保护

类型保护是一种TypeScript技术,用于获取变量类型信息,通常使用在条件块语句中。类型守卫是返回布尔值常规函数,接受一个类型并告诉TypeScript是否可以缩小到更具体类型。...TypeScript使用了一些内置JavaScript操作符,比如typeof、instanceof和in操作符,这些操作符用于确定一个对象是否包含属性。...如果一个变量类型未知,但它等于另一个具有精确类型变量,那么Typescript使用该已知变量提供信息来缩小第一个变量类型: function getValues(a: number | string...在这种情况下,Typescript把它缩小到字符串。如果没有收缩,a类型仍然不明确,因为它可以是数字或字符串。 带有谓词自定义类型保护 创建一个自定义类型守卫通常是使用类型守卫强大选项。...大多数时候,您用例可以使用instanceof类型保护、tyoeof类型保护或in类型保护来解决,然而,您可以在绝对必要时候使用自定义类型保护。

18010

TypeScript: 思考类型使用具体情节

此时访问这些声明变量,都可以访问Object接口所定义几个基本方法。 2.1.2 {}:而空花括号{}类型,则和Object很类似,同样可以接受任意类型值。它是指空对象类型。...:类型限制范围上:any > {} ~ Object > object 总结: 表示基本对象类型时,应当总是使用object类型,或者使用接口定义结构化对象。...被当作其他类型类型,即可以赋予任意其他类型声明变量。但是在开启了 --strictNullChecks 编译选项后,他们则只能被赋予void类型,或者各自同名类型。...never是所有类型类型并且可以赋值给所有类型。 没有类型是never类型或能赋值给never(never类型本身除外)。...在有明确never返回类型注解函数中,所有return语句(如果有的话)必须有never类型表达式并且函数终点必须是不可执行

55620

TypeScript: 常用高级类型

1 枚举 使用关键字enum可定义一个枚举类型。...,我们通常会将枚举类型值描述展示在页面上,因此此时如果使用枚举来表达会存在一些问题。...可问题在于touch事件对象与mouse事件对象是不一样。那么我们在兼容了这两种事件回调中,如何去描述该回调事件对象呢? 通常使用 & 符号来解决这样常见,将两种类型合并为一种类型。...为此,我们应该使用一些判断,帮助编辑器做出正确推断。 这种处理,就叫做类型保护。 5 索引类型 我们可以使用 keyof 来获取一个对象中key对应具体值。...目标对象类型,我们不确定,因此,只能使用一个泛型变量做一个简单约束。key值类型呢?我们可以使用 keyof 从泛型对象中获取。于是又定义另外一个泛型变量 K 来接收获取结果。

1.9K10

TypeScript 对象类型-接口

一、什么是接口 在 TypeScript 中,我们使用接口(Interfaces)来定义对象类型 接口是一系列抽象方法声明,是一些方法特征集合,第三方可以通过这组抽象方法调用,让具体类执行具体方法...TypeScript 中接口除了可用于对类一部分行为进行抽象以外,还可用于对「对象形状(Shape)」进行描述 举个例子: interface Person { name: string;...[propName: string] 定义了任意属性取 string 类型值 需要注意是,一旦定义了任意属性,那么确定属性和可选属性类型都必须是它类型子集: interface Person...,则可以在任意属性中使用联合类型: interface Person { name: string; age?...上例中,报错信息有两处: 1、在对 faker 进行赋值时候,没有给 id 赋值 2、在给 faker.id 赋值时候,由于它是只读属性,所以报错了 五、联合类型和接口 以下实例演示了如何在接口中使用联合类型

3.3K10

TypeScript类型断言

本文是关于 TypeScript type assertions ,它与其他语言中类型强制转换有相似之处,并通过 as 运算符执行。...---- 类型断言 类型断言使我们可以覆盖 TypeScript 为存储位置计算静态类型,这对于解决类型系统限制很有用。...类型断言是不得已方法,应尽可能避免。他们(暂时)删除了静态类型系统为我们提供安全网。 注意,在 A 行中,我们还覆盖了 TypeScript 静态类型,不过是通过类型注释完成。...这种覆盖方式比类型声明要安全得多,因为你可以做事情少得多。TypeScript 类型必须能够分配给注释类型。...length, 4); // OK 示例 – Maps: `.has()` 之后 `.get()` 使用 Map 方法 .has() 之后,我们知道 Map 具有给定键。

3.7K40

使用 TypeScript“严格”模式进行类型严格编码

工作经历回顾大约两周前,我决定解决一个与我之前做过很多工作不相关问题。一些背景信息,我在 C 和 C++ 方面有丰富经验,这些语言通常是类型严格。...但是,当考虑到我花费大量时间开发网站等项目时,我从未真正使用TypeScript 或其严格模式。我习惯了 JavaScript 类型自由和一些繁琐事情,于是我决定尝试完全相反东西。...在 TypeScript 中工作是一次有趣经历,严格模式让我想起了在 VS 中使用 C/C++ 感觉。无论如何,这是我在解决这个问题时经历过程。...总结感想使用 TypeScript 实际上是一次很有趣经历,我喜欢对比它和 C++。...看到一些我从未预料到会在 JavaScript 中看到错误,真是令人惊叹,让我感觉就像是在使用一种非常熟悉但又不同语言进行编程。我期待着尝试一些更多 TypeScript 项目。

16610

如何在TypeScript使用基本类型

队友可以准确地确定任何变量或函数参数预期类型,而无需通过实现本身。 本教程将介绍类型声明和 TypeScript使用所有基本类型。...在本节中,我们将尝试使用 TypeScript 指定变量类型语法。 类型是我们直接在代码中编写额外信息。TypeScript 编译器使用这些额外信息来强制正确使用不同值,具体取决于它们类型。...TypeScript使用基本类型 TypeScript 有多种基本类型,在构建更复杂类型时用作构建块。在以下部分中,我们将检查这些类型大多数。...使用它会失去 TypeScript 主要好处之一:拥有静态类型代码。 unknown unknown类型就像任何类型类型安全对应物。...当使用未知类型值执行任何操作时,TypeScript 需要确保类型是它所期望类型。这样做一个例子是使用 JavaScript 中已经存在 typeof 运算符。

3.7K10

TypeScript类型断言-类型声明和转换

TS中并不能判断在使用联合类型时具体是那种类型?当我们不知道是什么类型情况下要使用某个类型特有的属性或者方法,那么就可以用断言来实现,它实际上是对编辑器做了提前告知行为,但是并不能保证运行中报错。...//anyValue是any类型,在使用时候将其断言为string类型let anyValue:any = 'zhangsan';let length:number = (anyValue...).length;//0//anyValue是string或者number联合类型,在使用时候将其断言为string类型let anyValue:string | number = 'zhangsan'...;let length:number = (anyValue).length;//0使用断言虽然能避免编译中报错,但是却避免不了运行中报错type ClaaM = number |...,否则不要使用类型断言,这是因为类型断言会让 TypeScript 编译器将变量当做指定类型,而不管它实际类型,在程序运行时可能有类型错误,断言需要慎用。

28410

TypeScript数组类型定义

TypeScript 中声明和初始化数组也很简单,和声明数字类型和字符串类型变量也差不多,只不过在指定数组类型时要在类型后面加上一个中括号 [] 语法格式 const array_name: dataype...[] = [val, val2]; 示例 声明一个 string 类型数组 const character: string[] = ["杨过", "小龙女"]; 一维数组类型 声明一个 number...array: Array = ['孟浩然', 99]; 除了使用中括号 [] 方法来声明数组,你还可以使用 数组泛型 来定义数组 语法格式 const array_name..., val2, val3],[v1, v2, v3]]; // 等同于 const array_name: datatype[][] = [[val1, val2, val3]]; 多维数组类型 TypeScript...个 建议: 在定义数组类型时候使用数组泛型定义,这样显得更直观一点 Tuple 元组类型(元组类型允许表示一个已知元素数量和类型数组)

5.3K40
领券