ts
文章平均质量分 58
Gloomysunny
这个作者很懒,什么都没留下…
展开
-
ts3.9版本特性
ts3.9版本特性Uncalled Function Checks in Conditional Expressions先前的3.7版本中,只能在if条件代码块中进行一个函数是否调用的判断。现在版本完善了在三元运算符中的情况。Parsing Differences in Optional Chaining and Non-Null Assertions在可选链与非空断言联合使用时,编译结果的改变//source codefoo?.bar!.baz;//3.9以前(foo?.bar).baz原创 2021-10-19 10:14:24 · 211 阅读 · 0 评论 -
ts3.8版本特性
ts3.8版本特性Type-Only Imports and Export只导入、导出类型。import type { SomeThing } from "./some-module.js";export type { SomeThing };ECMAScript Private Fieldses规范的private 成员变量class Person { #name: string; constructor(name: string) { this.#name = name;原创 2021-10-18 09:37:09 · 286 阅读 · 0 评论 -
ts3.7版本特性
ts3.7版本特性就本节而言,新增的这些语法功能还是非常实用的,让我们不再需要等待浏览器对esxxx版本的支持,提前享受到高效语法的快乐。Optional Chaining(可选链)let x = foo?.bar.baz();等价于let x = foo === null || foo === undefined ? undefined : foo.bar.baz();我们平时可能会经常编写以下的代码// Beforeif (foo && foo.bar &原创 2021-10-17 09:50:08 · 253 阅读 · 0 评论 -
ts3.5版本特性
ts3.5版本特性优化了ts的类型检查速度和--incremental的速度https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#speed-improvements内置工具增加了Omittype Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;高阶函数调用构造函数在3.4中我们讲到在原创 2021-10-15 09:11:39 · 169 阅读 · 0 评论 -
ts3.4版本特性
ts3.4版本特性Faster subsequent builds with the--incrementalflag--incremental其实是和--tsBuildInfoFile联合起来使用的,--incremental是为我们上一次的compile信息做一次硬缓存,在我们下一次修改项目时会进行信息比对然后减少编译的消耗。--tsBuildInfoFile指定我们的缓存文件的目录,相对于cmd shell的相对路径吧。同时--outFile也会影响--tsBuildInfoFile的文件位置。原创 2021-10-14 10:44:28 · 227 阅读 · 0 评论 -
ts3.3版本特性
ts3.3版本特性Improved behavior for calling union types可以调用类型的联合类型的增强。//3.3以前的版本type Fruit = "apple" | "orange";type Color = "red" | "orange";type FruitEater = (fruit: Fruit) => number; // eats and ranks the fruittype ColorConsumer = (color: Color) =&原创 2021-10-13 08:36:29 · 113 阅读 · 0 评论 -
ts3.2版本特性
ts3.2版本特性strictBindCallApply一项新的严格模式,用于检查call与apply的绑定,主要通过下面接口加上函数重载实现interface CallableFunction extends Function { apply<T, R>(this: (this: T) => R, thisArg: T): R; apply<T, A extends any[], R>(this: (this: T, ...args: A) =>原创 2021-10-12 09:20:43 · 174 阅读 · 0 评论 -
ts3.1版本特性
ts3.1版本特性映射类型与元组和数组对数组/元组的映射后仍可以返回一个数组/元组type MapToPromise<T> = { [K in keyof T]: Promise<T[K]> };type Coordinate = [number, number];type PromiseCoordinate = MapToPromise<Coordinate>; // [Promise<number>, Promise<number>]原创 2021-10-11 09:37:43 · 105 阅读 · 0 评论 -
ts3.0版本特性
ts3.0版本特性Project References(项目引用)这是3.0提供的一个用于把我们的ts项目更加细粒话的功能。By doing this, you can greatly improve build times, enforce logical separation between components, and organize your code in new and better ways.实现这个功能的主要配置是references,与compilerOptions同级的顶原创 2021-10-10 10:08:07 · 319 阅读 · 0 评论 -
ts2.9版本特性
ts2.9版本特性Supportnumberandsymbolnamed properties withkeyofand mapped typestypescript 2.9 为映射类型的key增加了number与symbol类型。所以keyof T 返回 string|number|symbol类型编程中的keyof T就是for...in所以一个 object type 中keyof有以下特点:[props: string] : xxx 与 [ppp: number]: xxx 不能同时使用原创 2021-10-09 12:50:37 · 130 阅读 · 0 评论 -
ts2.8版本特性Conditional Types
ts2.8版本特性这个版本的Conditional Types,提供的功能真的非常强大。而且在我们的编程中非常常用。在我看来2.8中比较有突破性的新特性都是围绕着Conditionnal Types来实现的,同时为以后优秀的功能也埋下了伏笔。Conditional Types(条件类型,类似于if…else)条件判断类型,提供了更加图灵完备的类型编程T extends U ? X : YT 能够分配给 U 返回X类型,否则Y类型针对这个特性,有这样一段话For a given infe原创 2021-10-08 10:21:26 · 332 阅读 · 0 评论 -
ts2.7版本特性
ts2.7版本特性这个版本增加了比较实用的!annotation、到4.5版本(本文记录时)都在用的tuple修正形式、class相关的推断增强,以及好用的--esModuleInteropConstant-named properties对象属性可以采用常量进行声明,也可以使用Symbolconst Foo = "Foo";const Bar = "Bar";let x = { [Foo]: 100, [Bar]: "hello"};unique symbolts2.7新增原创 2021-10-06 09:27:09 · 425 阅读 · 0 评论 -
ts2.6版本特性
ts2.6版本特性 我认为Strict function types,给函数签名带来的类型安全检查是该版本最重要的,虽然他带来的是编码上的不方便,但是他给我们保证了更高的代码质量。Strict function types在严格函数类型模式下(--strictFunctionTypes),函数参数位置会被用于contravariant 而不是 bivariant检查.这里比较重要的概念逆变与协变:What are covariance and contravariance?.这里是我对逆变协原创 2021-10-05 08:11:45 · 136 阅读 · 0 评论 -
ts2.5版本特性
ts2.5版本特性Optionalcatchclause variables可以忽略catch (e: Error)参数的输入let input = "...";try { JSON.parse(input);} catch { //catch (e:Error) // ^ Notice that our `catch` clause doesn't declare a variable. console.log("Invalid JSON given\n\n" + input);}原创 2021-10-04 08:55:02 · 275 阅读 · 0 评论 -
ts2.4版本特性
ts2.4版本特性 这一篇对于泛型推导的完整度又进行了一个提升Dynamic Import Expressions支持ecma规范的import动态导入功能,将--target设置为esnextString Enums支持了字符串的枚举enum Colors { Red = "RED", Green = "GREEN", Blue = "BLUE"}//emit.jsvar Colors;(function (Colors) { Colors["Red"] =原创 2021-10-03 09:46:28 · 112 阅读 · 0 评论 -
ts版本备忘录2.2
前文链接原文链接 这一篇仅仅记录了我之前不太常用的特性,还有一些我们平时在用却不知道什么时候加入的特性Ts 2.2版本新特性Support for Mix-in classes(混入class支持)概念mixin constructor type(混入构造器类型):由构造器标签new (),构造器参数(… rest形式)...args: any[],和一个实例返回值类型X表示interface Person{ age: number}new (...args: any[]) =原创 2021-09-30 09:52:00 · 258 阅读 · 0 评论 -
ts版本特性备忘录2.0
前文链接原文链接 ok,继续衔接1.x的特性进行查漏补缺,虽然之前看的特性可能会被删除或者补充,但是查阅官方文档的时候总是有新的收获。虽然文中大量的例子都是来自官方文档,但我也有做一些简答的修改让其变得更加易懂。2.0Null- and undefined-aware types检查器在2.0以前null与undefined可以分配给任何类型说白了就是以前对undefined 和 null的检查不够严格,现在给他们一个分别一个类型对应Undefined 和 Null--strictNul原创 2021-09-28 12:59:49 · 266 阅读 · 0 评论 -
typescript中的协变、逆变
typescript中的协变、逆变 想要写出更加优秀的类型编程co-variance(协变)contra-variance(逆变)这类知识是我们必须掌握的。这篇记录也仅仅是为了方便之后哪天这块知识在应用过程中出现问题后,能够根据此篇,来快速定位编写代码中的问题。这篇也仅仅是一些学习资料的记录。文中许多表述,都是个人的理解毕竟本人学历较低英语水平较差,资料中的表述多有理解不充分的地方。资料的源链(需要科学上网)原文链接首先我们需要知道以下的概念。在泛型编程中泛型参数会影响类型泛型的关系。出于t原创 2021-09-20 21:43:25 · 374 阅读 · 0 评论 -
typescript 版本备忘录
原文链接1.X 版本列表1.1包可见性(module visibility) ??? module namespace?一般用.d.ts描述1.3protected修饰符只允许当前类以及子类拓展使用修饰符指定的field,methodtuple元组限制长度以及索引对应的类型的数组1.4union type(联合类型)一系列的类型更严格的泛型let declaration: let 声明constdeclaration:const 声明let andconstare only原创 2021-09-19 15:32:45 · 440 阅读 · 0 评论