首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

超 1.7 万个 JavaScript 文件,Etsy 大型代码库如何完成向 TypeScript 迁移?

类型从根本上来说,在编程中,类型是通过代码移动数据期望方式:函数可以使用哪些类型输入,变量可以保存哪些类型值。(如果你不熟悉类型概念,TypeScript 手册有一个 很好介绍)。...使用 TypeScript 文件中类型化依赖项会使代码难以使用,并可能会引入类型错误;尽管 TypeScript 会尽力推断非 TypeScript 文件中类型,但是如果无法推断,则默认为“any...使用 typescript-eslint 提高类型特异性 我们在 Etsy 中大量使用了自定义 ESLint Lint 规则。...,那么其他开发者将更容易正确使用我们函数。...在任何时候,如果确实需要使用“as”,我们可以随时添加一次性 Lint 例外。

63110

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

本文来自于我在所在团队(淘宝店铺)内部制定、落地、推广 ESLint 规则集收获,将会简要介绍一批我认为在 TypeScript 分享中非常有必要规则,通过这篇文章,你会了解到在制定规则时我们考虑是什么...都写 TypeScript 了,还在意这小小 Lint 规则?...array-type TypeScript 中支持使用 Array 与 T[] 形式声明数组类型,此规则约束项目中对这两种数组类型声明。...这一类干涉代码检查指令使用本就应该慎之又慎,在任何情况下都不应该被作为逃生舱门(因为它真的比 any 还好用),如果你一定要用,也要确保用恰当。...consistent-type-definitions TypeScript 支持通过 type 与 interface 声明对象类型,此规则可将其收束到统一声明方式,即仅使用其中一种。

2.6K30

typescript 数据类型有哪些

一、typescript是什么 typescript 是 javascript超集,在javascript基础上提供了更加实用类型供开发使用; 支持ES6语法,支持面向对象编程概念,如类、接口、继承...方式二:使用数组泛型,Array: let arr:Array = [1, 2]; arr = ['45', '56']; tuple 元祖类型,允许表示一个已知元素数量和类型数组...enum Color {Red, Green, Blue} let c: Color = Color.Green; any 可以指定任何类型值,在编程阶段还不清楚类型变量指定一个类型,不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段检查...,这时候可以使用any类型 使用any类型允许被赋值为任意类型,甚至可以调用其属性、方法 let num:any = 123; num = 'str'; num = true; 定义存储各种类型数据数组时...这有助于在开发阶段发现和预防潜在类型错误,提高代码健壮性和可维护性。 2.类型注解:在TypeScript中,可以使用类型注解来显式声明变量类型,如let num: number = 10;。

9710

淘宝店铺 TypeScript 研发规约落地实践|技术详解

编写更优雅 TypeScript 代码 那么,能被称之为优雅 TypeScript 代码会是什么呢?...any 与 unknown 在 TypeScript 中其实都属于父类型,也就是 Top Type,使用 any 意味着你完全放弃了类型检查,同时由于它传染性,一个被断言为 any 变量,基于其操作与派生在后续都将被视为...any 与 unknown 所以 TypeScript 后续又引入了 unknown,它们最大区别是 unknown 仍然是有类型检查,unknown 变量在后续操作中需要手动断言,也就意味着你虽然不知道它应该是什么类型...类型守卫 其实,更理想做法是使用类型守卫,通过实际层面的逻辑判断,比如是否包含某个字段,某个字段是否是正确类型,结合 TypeScript is 关键字来在实际使用时去精确地收窄类型。...还有使用语法代替掉老语法,比如空值合并代替逻辑或,可选链代替逻辑与。对象类型只能用 interface 声明类型别名应该用来做联合类型、函数类型、工具类型声明等。

1.1K20

Typescript 数据类型总结

一、是什么 typescript 和 javascript几乎一样,拥有相同数据类型,另外在javascript基础上提供了更加实用类型供开发使用 在开发阶段,可以为明确变量定义为某种类型,这样...方式二:使用数组泛型,Array: let arr:Array = [1, 2]; arr = ['45', '56']; tuple 元祖类型,允许表示一个已知元素数量和类型数组..., '34'] // no ok 赋值类型、位置、个数需要和定义(声明类型、位置、个数一致 enum enum类型是对JavaScript标准数据类型一个补充,使用枚举类型可以为一组数值赋予友好名字...enum Color {Red, Green, Blue} let c: Color = Color.Green; any 可以指定任何类型值,在编程阶段还不清楚类型变量指定一个类型,不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段检查...,这时候可以使用any类型 使用any类型允许被赋值为任意类型,甚至可以调用其属性、方法 let num:any = 123; num = 'str'; num = true; 定义存储各种类型数据数组时

1.1K10

Typescript真香秘笈

我相信有很多人也抱持着这样想法。 然而,最近由于项目需要,学习并使用了一波typescript,结果。。。 2. Typescript是什么?...如果给变量赋予与其声明类型不兼容值,就会有报错提示。 例如: Array 数组类型typescript中,有两种声明数组类型方式。...设置为any类型后,相当于告诉typescript编译器跳过这个变量检查,因此可以访问、设置这个变量任何属性,或者给这个变量赋任何值,编译器都不会报错。...实际上有专门针对typescriptlint工具ts-lint,但是现在并不推荐使用了,因为为了统一ts和js开发体验,tslint正在逐步地合并到eslint上(https://medium.com...如果项目很庞大,无法一下子全部重构,实际上也不妨碍使用ts。 在tsconfig.json文件中配置allowJs: true就可以兼容js。 对于项目中js文件,有三种处理方式。 不做任何处理。

5.6K20

Typescript 数据类型总结

一、是什么 typescript 和 javascript几乎一样,拥有相同数据类型,另外在javascript基础上提供了更加实用类型供开发使用 在开发阶段,可以为明确变量定义为某种类型,这样...方式二:使用数组泛型,Array: let arr:Array = [1, 2]; arr = ['45', '56']; tuple 元祖类型,允许表示一个已知元素数量和类型数组..., '34'] // no ok 赋值类型、位置、个数需要和定义(声明类型、位置、个数一致 enum enum类型是对JavaScript标准数据类型一个补充,使用枚举类型可以为一组数值赋予友好名字...enum Color {Red, Green, Blue} let c: Color = Color.Green; any 可以指定任何类型值,在编程阶段还不清楚类型变量指定一个类型,不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段检查...,这时候可以使用any类型 使用any类型允许被赋值为任意类型,甚至可以调用其属性、方法 let num:any = 123; num = 'str'; num = true; 定义存储各种类型数据数组时

2.1K31

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

布尔值是最基础数据类型,在 TypeScript 中,使用 boolean 定义布尔值类型: 以下都编译通过,并且给出了说明,一句话总结,是什么类型就要赋值给什么类型,这句话够俗了吧 正确写法 /...null let u: undefined = 888; let n: null = 999; 任意值 正确写法 // 顾名思义,可以被任何值赋值 let anyThing: any = 'hello...; // 变量如果在声明时候,未指定其类型,那么它会被识别为任意值类型: let any; any =true; 错误写法 没有错误写法~ 类型推论 正确写法 // 如果没有明确指定类型,那么...,可以使用如下方式:旦定义了任意属性,那么确定属性和可选属性类型都必须是它类型子集 interface Person { name: string; age?...number{ return value; } //>>>>>>>>>>使用泛型后就可以解决这个问题 // T表示泛型,具体什么类型是调用这个方法时候决定 // 表示参数是什么类型就返回什么类型

1.1K20

前端代码质量—怎样实现一个支持多语言、高扩展性 Linter

于是聪明程序员通过各种方式(投票、一致同意等)达成了代码看起来应该是什么共识,确定了各种细节,以便结束争端,让大多数人满意。这个共识就是代码规范。...而如果规则定义了不允许使用 var 声明的话,计算机就可以给出不应该使用 var 声明诊断。...用图方式表达更加清晰 AST 配置 配置是什么 配置是对规则约束。同一条规则实现,可能出现两种相反或者多种不一致情况。...诊断 根据使用环境不同,对代码诊断显示方式也会有所不同, 命令行 命令行中提示样子都大同小异,错误信息会包括文件名、行、列以及问题,有些情况下还可以展示源代码前后几行,便于寻找问题。...ESLinter ESLinter 是 JavaScript 以及 TypeScript 类型文件 Linter 抽象实现。

1.4K20

前端代码质量—怎样实现一个支持多语言、高扩展性 Linter

于是聪明程序员通过各种方式(投票、一致同意等)达成了代码看起来应该是什么共识,确定了各种细节,以便结束争端,让大多数人满意。这个共识就是代码规范。...而如果规则定义了不允许使用 var 声明的话,计算机就可以给出不应该使用 var 声明诊断。...用图方式表达更加清晰 AST 配置 配置是什么 配置是对规则约束。同一条规则实现,可能出现两种相反或者多种不一致情况。...诊断 根据使用环境不同,对代码诊断显示方式也会有所不同, 命令行 命令行中提示样子都大同小异,错误信息会包括文件名、行、列以及问题,有些情况下还可以展示源代码前后几行,便于寻找问题。...ESLinter ESLinter 是 JavaScript 以及 TypeScript 类型文件 Linter 抽象实现。

1.1K10

从 0 到 1 搭建一个企业级前端开发规范

TypeScript 会在编译代码时,进行严格静态类型检查。...无需任何运行时额外开销 TypeScript 接口定义后,可以充分利用 VSCode 自动补全/自动提示功能.因此可以直接代替文档,同时可以提高开发效率,降低维护成本 接下来我们在 CLI 中安装...Build项目中, 使用 Webpack Babel 对项目代码进行编译,因此使用 TypeScript 唯一目的仅仅是对项目代码进行类型检查。...参考文档 esModuleInterop: 参考文档 skipLibCheck:忽略所有的声明文件( *.d.ts)类型检查 strict:开启所有严格类型检查.如果 strict=true,则 所有...: React 代码规范校验规则 react/jsx-key:用来检查是否声明了 key 属性 no-array-index-key:用来检查是否使用了数组索引声明 key 属性 ....其他 React

2.8K20

初识 TypeScript

TypeScript 是什么 ? 2. 为什么要学习 TypeScript ? 3. 安装 TypeScript 4. 原始数据类型any 类型 5. 数组和元组(tuple) 6....TypeScript 是什么 ? ---- 编程语言类型: 静态类型语言、动态类型语言 静态类型语言数据类型是在编译期间检查。也就是说,在编写程序时就要声明变量数据类型。...如: Java 动态类型语言是指在运行期间才去做数据类型检查语言。也就是说,永远不用给变量指定数据类型。如: Python、PHP TypeScript 究竟是什么 ?...另外一种是 Object 注意: undefined、null 是所有类型类型,所以下面写法是正确 let age: number = undefined 顶级类型: any,可以接收所有数据类型数据...函数中声明数据类型 ---- 普通声明函数,函数结果返回 number 类型 /** 函数表达式声明函数返回是一个函数类型 const add = (x: number, y: number,

85320

初次在Vue项目使用TypeScript,需要做什么

可以看到 TypeScript声明变量时需要为变量添加类型,如果变量值和类型不一致则会抛出错误。静态类型只在编译时进行检查,而且最终编译出来代码依然是 JavaScript。...其次,TypeScript 增加了代码可读性和可维护性,类型定义实际上就是一个很好文档,比如在调用函数时,通过查看参数和返回值类型定义,就大概知道这个函数如何使用。...而 ESLint 团队将不再维护 typescript-eslint-parser,也不会在 Npm 上发布,任何使用 tyescript-eslint-parser 用户应该改用 @tyescript-eslint...装饰器(Decorators)为我们在类声明及成员上通过元编程语法添加标注提供了一种方式。...: any; } 自定义三方库声明使用三方库未带有 *.d.ts 声明文件时,在项目编译时会报这样错误: Could not find a declaration file for module

6.5K40

【总结】超全面的前端工程化配置指南!

Typescript 先安装 TypeScript,然后使用 tsc 命名生成 tsconfig.json。...": true, // 跳过导入第三方 lib 声明文件类型检查,默认为 true "forceConsistentCasingInFileNames": true, // 强制在文件名中使用一致大小写...npm run lint 我们现在已经完成了eslint和prettier集成配置。和编辑器无关,也就是说无论你使用什么编辑器,有没有安装相关插件,都不会影响代码校验效果。...安装jest,和类型声明@types/jest,它执行需要ts-node和ts-jest 这里暂时固定了ts-node版本为 v9.1.1,新版ts-node@v10.0.0会导致jest报错,等待官方修复...更多发布规则,详见:github.com/semantic-re… SemanticRelease 使用方式,详见:semantic-release.gitbook.io 如果你能正确配置上面所有步骤,

34930

TypeScript 4.4 RC版来了,正式版将于月底发布

类型检查器会使用“控制流分析”机制推断每个语言构造中类型,这就省去了在使用时对 TypeScript 变量类型做出声明麻烦。...中,任何类型都可使用 throw 抛出并在 catch 子句中进行捕捉。...因此,TypeScript 以往一直将 catch 子句变量类型化为 any,且不允许任何其他类型注释: try { // 谁知道这会抛出什么......'any' err.thisWillProbablyFail(); // 允许,因为符合'any' :( } 这一次,TypeScript 迎来了 unknown 类型;对于需要尽可能提高正确性与类型安全性用户来说...如果我们不想在 catch 子句中处理 unknown 变量,则可以始终添加明确 : any 注释以声明使用更严格类型

2.5K20

TypeScript 演化史 — 第八章】字面量类型扩展 和 无类型导入

扩展字面量类型使用 const 关键字声明局部变量并使用字面量值初始化它时,TypeScript 将推断该变量字面量类型: const stringLiteral = "https"; // Type...缺点是,不会得到任何自动完成建议或细粒度类型检查,因为编译器对模块或其导出一无所知。 如果过后提供类型声明,例如通过 npm 类型声明包,它们将优先于默认任何类型。...使用TypeScript 2.1,TypeScript 不是仅仅选择any类型,而是基于你后面的赋值来推断类型。 仅当设置了--noImplicitAny编译参数时,才会启用此选项。...在 TypeScript 2.2 中,表达式password.length <= max是不正确类型,如果你应用程序正在严格null检查模式下运行: function isValidPasswordLength...从TypeScript 2.2开始,增加了对 ES6 混合类(mixin class)模式。接下来讲讲 mixin 是什么,然后举例说明了如何在 TypeScript使用它们。

4.5K10
领券