typescript

95 阅读2分钟

关于typescript

static(对应的dynamic在runtime检查)

structural(对应nominal)

类型

top type:any、unknown

any:可包含js中任何类型的值

unknown:可包含js中任何类型的值,但在使用前必须先做类型检查(typeof、instanceof)

bottom type:never

基础类型

string、number、boolean、null、undefined、bigint、symbol、any、unknown、never、void

12(字面量类型的例子)

Date、Event、HTML。。。

聚合类型

Object

普通对象

let obj : {

属性名1:属性类型1

属性名2:属性类型2

属性名3?:属性类型3

}

非必需的属性名后加问号

字典性质对象(有不同的属性名,属性名后的类型相同)

Array

特征: 由相同类型的数据组成

let arr : string[]

模式是type[]

tuple(special type of array元组)

特征:数组的长度、每个位置的类型确定

let tuple : [string, number]

Union and Intersection Types

都是操作符

union

表示多个类型都可以 eg: 'success' | 'error'

常用于返回成功或失败类型

function fun() : ['success', string] | ['error', Error]

intersection(重叠)

两个类型都满足,对特定类型的具体化

function fun() : Date & {end: Date}

type、interface

都可以被import export

type

giving a type a name

type yourTypeName = your type's structural

interface

只能被用于定义object类型

继承:extends 、implements

extends用于class继承class、interface继承interface

implements用于class继承interface; 可以拓展

递归类型

函数

函数返回值void(无效的)和undefined的区别:

void只被用于函数返回值的类型,表示应当忽略这个值

undefined就是要返回undefined

多态(overload)

generics(泛型?)

占位符作用。<>是类型参数列表,T是定义的类型参数。

可访问性修饰符

针对类的字段、函数,能够访问和使用

private: 对自身的类可见

protected:对自身的类和子类可见

public:都可以(default)

readonly可以和上面3者进行组合

文档

www.typescriptlang.org/zh/docs/han…