-
假设有一个值 TypeScript 认为可以为
null或undefined,但是你更清楚它的类型,你可以使用!后缀.declarevar foo: string[] | null;foo.length; //error - 'foo'is possibly 'null'foo!.length; //okay - 'foo!'just has type'string[]'
-
this没有隐式的any, 可以通过设置noImplicitThis限制 -
浮点数的类型是
number, 而大整数的类型则是bigint -
数组泛型,
Array<元素类型> -
unknown类型(之前没有) -
TypeScript 具有
ReadonlyArray<T>类型,它与Array<T>相似,只是把所有可变方法去掉了 -
带有任意数量的其它属性,那么我们可以这样定义它:
[propName: string]: any; -
可索引类型:
[index: number]: string; -
类使用接口:class Clock implements ClockInterface -
当你操作类和接口的时候,你要知道类是具有两个类型的:静态部分的类型和实例的类型;当一个类实现了一个接口时,只对其实例部分进行类型检查。 constructor 存在于类的静态部分,所以不在检查的范围内,需要为静态部分另外写接口 -
字面量类型: TypeScript 中有三种可用的字面量类型集合,分别是:字符串、数字和布尔值。通过使用字面量类型,你可以规定一个字符串、数字或布尔值必须含有的确定值, 例如: type a = 1|2|3 -
interface和type的区别: [type 与 interface 的区别,你真的懂了吗? - 掘金 (juejin.cn)](<https://juejin.cn/post/7072945053936648200>) -
抽象类做为其它派生类的基类使用。 它们一般不会直接被实例化
-
类的类型是构建函数的类型 -
泛型约束: extends\extends keyof -
is关键字一般用于函数返回值类型中,判断参数是否属于某一类型,并根据结果返回对应的布尔类型 -
工具类型: [实用工具类型 | TypeScript手册 (bosens-china.github.io)](<https://bosens-china.github.io/Typescript-manual/download/zh/reference/utility-types.html#%E7%9B%AE%E5%BD%95>) -
装饰器–实验性
-
需要根据不同的形式,写d.ts文件,如npm包,umd库
-
在一个.d.ts文件中引入了其他模块,就会使ts类型系统将其视为一个模块,导致其中的所有类型即使添加了declare关键字也不能直接全局使用,修复
import{ RawDraftContentState } from 'draft-js';declareglobal {interface FieldConfigDataIte {data: RawDraftContentState}} -
强制类型转换有两种方法
// 第一种:使用<>括号 const convertArrType: string[] = <Array<string>>[].concat(['s']); // 第二种:使用as关键字 const fixArrNever: string[] = ([] as string[]).concat(['s']);
-
枚举可以当类型使用, 类似枚举类型TS学习笔记6:枚举作为类型使用 - 掘金 (juejin.cn)
-
?? Null运算符,只有左侧为undefine或者null才返回右侧的值