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

以淘宝店铺为例,谈谈 TypeScript ESLint 规则集考量

array-type TypeScript 中支持使用 Array 与 T[] 的形式声明数组类型规则约束项目中对这两种数组类型的声明。...实际上,这一类规则(还有后面的类型断言语法)就类似于单引号/双引号,加不加分号这种基础规则,如果你不能接受上一行代码单引号这一行代码双引号,那么也没理由能接受这里一个 Array 那里一个...ban-types 禁止部分值被作为类型标注,规则能够对每一种被禁用的类型提供特定的说明来在触发规则报错时给到良好的提示,场景如禁用 {}、Function、object 这一类被作为类型标注, 为什么...non-nullable-type-assertion-style 规则要求在类型断言仅起到去空值作用,如对于 string | undefined 类型断言为 string时,将其替换为非空断言 !...; // x foo as string; 为什么:当然是因为简化代码了!规则的本质是检查经过断言后的类型子集是否仅剔除了空值部分,因此无需担心对于多种有实际意义的类型分支的联合类型误判。

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

深度讲解TS:这样学TS,迟早进大厂【11】:类型断言

类型断言的用途§ 类型断言的常见用途有以下几种: 将一个联合类型断言为其中一个类型§ 之前提到过,当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问联合类型的所有类型中共有的属性或方法...但是有的情况下 ApiError 和 HttpError 不是一个真正的类,而只是一个 TypeScript 的接口(interface),接口是一个类型,不是一个真正的值,它在编译结果中会被删除,当然就无法使用...总之,一方面不能滥用 as any,另一方面也不要完全否定它的作用,我们需要在类型的严格性和开发的便利性之间掌握平衡(这也是 TypeScript 的设计理念之一),才能发挥出 TypeScript 最大的价值...类型断言 vs 类型转换§ 类型断言只会影响 TypeScript 编译时的类型类型断言语句在编译结果中会被删除: function toBoolean(something: any): boolean...则会报错,不允许将 animal 赋值为 Cat 类型的 tom。 这很容易理解,Animal 可以看作是 Cat 的父类,当然不能将父类的实例赋值给类型为子类的变量。

1.1K20

TypeScript】超详细的笔记式教程【中】

用于手动指定一个值的类型 基本语法 (推荐) 值 as 类型 or (不推荐) 值 用途 将一个联合类型断言为其中一个类型 TypeScript不确定一个联合类型的变量到底属于哪个类型的时候...,只能访问联合类型的所有类型中共有的属性或方法,比如之前说的string | number 访问toString,再举个栗子: interface Dog { name: string;...【欺骗】TypeScript编译器,无法避免运行时的错误,滥用类型断言可能会导致运行错误,举个栗子: interface Dog { name: string; run(): void;...: number = 1 foo.length = 1 这样写是不能通过编译的,因为foo是number类型,是没有length属性的,所以TypeScript给了提示类型“number”上不存在属性...总结 类型断言的用途: 联合类型可以断言为其中一个类型 父类可以被断言为自类 任何类型可以断言成 any any可以断言成任何类型 A包含B的所有属性,或者B包含A的所有属性,A和B才能相互断言 双重断言

98420

理解 TypeScript 类型拓宽

TypeScript 中,过程称为拓宽。理解它可以帮助你理解错误并更有效地使用类型注释。...尽管 TypeScript 很聪明,但它无法读懂你的心思。它不能保证 100% 正确,正如我们刚才看到的那样的疏忽性错误。...它需要推断一个足够具体的类型来捕获错误,但又不能推断出错误的类型。它通过属性的初始化值来推断属性的类型,当然有几种方法可以覆盖 TypeScript 的默认行为。...arr2 = [1, 2, 3] as const; 如果你认为类型拓宽导致了错误,那么可以考虑添加一些显式类型注释或使用 const 断言。...三、非拓宽字面量类型的用处 为了理解为什么非拓宽的字面量是有用的,让我们再来看一下拓宽的字面量类型

1.6K40

TypeScript学习笔记(二)—— TypeScript基础

5.2、访问联合类型的属性或方法 当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问联合类型的所有类型里共有的属性或方法: function getLength(something...9.2、类型断言的用途 类型断言的常见用途有以下几种: 9.2.1、将一个联合类型断言为其中一个类型 之前提到过,当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问联合类型的所有类型中共有的属性或方法...但是有的情况下 ApiError 和 HttpError 不是一个真正的类,而只是一个 TypeScript 的接口(interface),接口是一个类型,不是一个真正的值,它在编译结果中会被删除,当然就无法使用...总之,一方面不能滥用 as any,另一方面也不要完全否定它的作用,我们需要在类型的严格性和开发的便利性之间掌握平衡(这也是 TypeScript 的设计理念之一),才能发挥出 TypeScript 最大的价值...9.5、类型断言 vs 类型转换 类型断言只会影响 TypeScript 编译时的类型类型断言语句在编译结果中会被删除: function toBoolean(something: any): boolean

5K20

TypeScript

#类型断言 类型断言(Type Assertion)可以用来手动指定一个值的类型。 #什么是断言 有些情况下 TS 并不能正确或者准确得推断类型,这个时候可能产生不必要的警告或者报错。..."; let strLength: number = (someValue as string).length;// 临时把 someValue 断言为一个string 类型的值 #将任何一个类型断言成...#类型断言的限制 联合类型可以被断言为其中一个类型 父类可以被断言为子类 任何类型都可以被断言为 any any 可以被断言为任何类型 要使得 A 能够被断言为 B,只需要 A 兼容 B 或 B 兼容...比如不能使用number类型的数据获取length,但是 array 却可以。...这里有意使用不同的变量名,以表明类型值沿链向上传播,且与变量名无关。 #泛型约束 确保属性存在 当我们在函数中获取length属性,在类型为number时,是没有length的,所以会报错。

1.8K10

TypeScript 黑魔法之编译选项设置

也就是说,传统的编程语言在类型系统允许与不允许之间存在明显的边界。TypeScript不同于传统的编程语言,它可以让你自己设置类型系统的边界。...在TypeScript中,有很多选项都可以精确地控制边界,现在就来看看它们吧。...name; // 可以,我们已经断言e是非null } 注意,它只是一个断言,就像类型断言一样,你需要确保该值不为空。...一个非null的断言实质上意味着你在告诉编译器“知道它不是null,但是请让使用它,即使它不是null”。 明确赋值断言操作符 TypeScript将会对类中未初始化的属性抛出错误。...本书首先介绍了TypeScript与JavaScript的关系,讲解了TypeScript类型系统的基础语法,对初学者非常友好;然后全面阐述了 TypeScript 的各种“魔法”,并且深入地剖析了TypeScript

83140

作为JavaScript的“超集”,感受一下TypeScript 的那些黑魔法

TypeScript发展至今,已经成为很多大型项目的标配,其提供的静态类型系统,大大增强了代码的可读性及可维护性;同时,它提供最新的和不断发展的JavaScript特性,能让我们构建更健壮的组件。...也就是说,传统的编程语言在类型系统允许与不允许之间存在明显的边界。 TypeScript不同于传统的编程语言,它可以让你自己设置类型系统的边界。...在TypeScript中,有很多选项都可以精确地控制边界,下文选自《深入理解TypeScript》一书,现在就让我们去了解它们吧。...name; // 可以,我们已经断言e是非null 10} 注意,它只是一个断言,就像类型断言一样,你需要确保该值不为空。...一个非null的断言实质上意味着你在告诉编译器“知道它不是null,但是请让使用它,即使它不是null”。 ◆ 明确赋值断言操作符 TypeScript将会对类中未初始化的属性抛出错误。

1K20

TS内置类型与拓展

泛型被删除,只有最后一个重载签名被传播到新的函数类型中。...通常当TypeScript不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问联合类型的所有类型中共有的属性或方法。...当然这里只是举一个例子说明断言的使用,因为滥用断言是不提倡的,类型断言只能够欺骗TypeScript编译器,而无法避免运行时的错误,滥用类型断言可能会导致运行时错误。...此外类型断言之所以不被称为类型转换,是因为类型转换通常意味着某种运行时的支持,而类型断言只会影响TypeScript编译时的类型类型断言语句在编译结果中会被删除,也就是说类型断言纯粹是一个编译时语法,...,来告诉TypeScript这个变量确实已被赋值,即使TypeScript不能分析出这个结果。 let x: number; let y!

98610

TypeScript 5.3

它实际上充当了一个名为PointLike的单独类型的自定义类型保护。 在函数f中,我们能够用value将PointLike缩小到instanceof,但不能缩小到Point。...这意味着我们可以访问属性x和y,但不能访问方法distanceFromOrigin。 有关更多信息,您可以在这里阅读有关更改的信息。...这可以使这些工具获得与我们为TypeScript编译器带来的相同的内存和速度改进。 注释解析策略的新选项在JSDocParsingMode中描述。 有关拉取请求的更多信息。...通过比较非规范化相交进行优化 在TypeScript中,联合和交集始终遵循特定的形式,其中交集不能包含联合类型。...当我们比较类型时,我们做一个快速检查,看看目标是否存在于源交集的任何组成部分中。 有关详细信息,请参阅pull request。

19510

一篇朴实的文章带捋完TypeScript基础,方法是正反对比!

以下为原文内容 目前公司的主架构已经定为了react和typescript,因此把typescript又大致捋了一下 发现把正确的写法和错误的写法对比着来看.好像学习起来更加快速.更加有劲~ 正确的大部分人都会写...,我们更重要的就是记住为什么错了~ 至少这种方法对非常有用,好了,废话不多说.马上开始~ 原始数据类型 JavaScript 的类型分为两种:原始数据类型和对象类型。...length属性.所以编译错误,因为我们只能访问联合类型的所有类型里共有的属性或方法: function getLength(something: string | number): number{...return something.length; } 对象的类型——接口 正确的写法 // 赋值的时候,变量的形状必须和接口的形状保持一致(不能多也不能少,类型还必须一致) interface...正确的做法 // 可以使用类型断言,将 something 断言成 string function getLength(something: string | number): number {

1.1K20

4000字讲清 《深入理解TypeScript》一书 【基础篇】

Type类型的约束、不确定情况下的提示、在代码编写阶段就能知道自己的错误 这三点认为是最关键的点,本身TypeScript能做的事情,JavaScript都能做,虽然使用TS要多写很多代码,但是其实真正算下来...event as HTMLElement; // Error: 'Event' 和 'HTMLElement' 中的任何一个都不能赋值给另外一个 } 如果你仍然想使用那个类型,你可以使用双重断言。...; // ok } TypeScript 是怎么确定单个断言是否足够 当 S 类型是 T 类型的子集,或者 T 类型是 S 类型的子集时,S 能被成功断言成 T。...为 false 时),但是 never 不能赋值给其他任何类型,除了 never TypeScript 索引签名 JavaScript 在一个对象类型的索引签名上会隐式调用 toString 方法...,而在 TypeScript 中,为防止初学者砸伤自己的脚(总是看到 stackoverflow 上有很多 JavaScript 使用者都会这样。)

1.9K30

在 Vue 中使用 TypeScript 的一些思考(实践)

使用 JavaScript 时,这并没有什么不对的地方,但当你使用 TypeScript 时,这有点不足,我们并不能得到有关于 someProp 更多有用的信息(比如它含有某些属性),甚至在 TypeScript...然而,你必须以函数返回值的形式断言,并不能直接断言: export default Vue.extend({ props: { testProps: { type: Object...当在 TypeScript 中使用它时,我们希望得到有关于 mixins 的类型信息。...当你使用 Vue.extends() 时,这有点困难,它并不能推断出 mixins 里的类型: // ExampleMixin.vue export default Vue.extend({ data...导入 .vue 时,为什么会报错? 当你在 Vue 中使用 TypeScript 时,所遇到的第一个问题即是在 ts 文件中找不到 .vue 文件,即使你所写的路径并没有问题: ?

3.2K30

TypeScript基础常用知识点总结

TypeScript—函数 10. TypeScript类型推论和类型断言 11. TypeScript—枚举 12. TypeScript—泛型 13....TypeScript类型声明文件 本篇是对TS的一些总结,TypeScript虽然和JavaScript语法类似,但他们之间在使用细节上还是有很大的不同的,写本篇目的是便于自己以后查阅和复习。...TypeScript类型推论和类型断言 如果没有明确的指定类型,那么 TypeScript 会依照类型推论的规则推断出一个类型。...'; myFavoriteNumber = 7; 类型断言 类型断言可以用来手动指定一个值的类型。...当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问联合类型的所有类型中共有的属性或方法: interface Cat { name: string;

4.8K30
领券