TypeScript 词条(39 条)
关键字
interface画一张户型图,规定对象有哪些房间、各房间放什么家具;编译器按图验收,少一间或家具放错都不让过。
type给类型起个外号,既能描述对象形状,也能表示联合、元组等复杂组合。
enum给一组固定选项编号挂牌,像宿舍门牌从 0 开始依次贴。
declare在类型系统里挂个"此物已存在"的牌子,不生成任何运行时代码,像图书馆里先登记一本还没上架的书。
abstract像一份只有提纲没有成稿的模板,不能直接拿去印刷,必须有人按提纲填出完整版。
implements类签了一份协议,保证自己提供 interface 要求的所有服务,缺一项就违约。
readonly给属性贴张"只准看、不准改"封条,像博物馆展柜里的标签,人人可见但动不了。
keyof把对象所有键名抓出来组成一把钥匙串,只有字符串、数字或符号键能上串。
as像把一张票据强行填进指定抽屉;你告诉编译器"我确定它是这个类型",错了就是你自己担责。
satisfies让值接受类型体检,同时保留自己最精确的原始类型,像考生必须符合报名条件,但毕业证上仍保留真实成绩。
infer在类型定义里临时"抓"出一个类型存到变量,像从快递箱标签上读取内件类型。
private把类成员锁进保险箱,只有类自己能用钥匙打开,类外面摸不到。
public类成员默认放在大堂,谁进来都能看见、都能用。
never表示"永远到不了这里",像一条被堵死的死胡同,没有任何值能住进去。
unknown比 any 更守规矩的顶层类型,像是贴着"内容不明"的包裹,拆开前必须验货。
any关闭类型检查的黑洞,什么东西丢进去都被吞掉,编译器不再帮你把关。
void表示函数出门时手里不拿东西,像去开会只听讲、不带资料回来。
string给变量贴上"只能存文本"的标签,像只能装信的信箱,塞数字会卡住。
number给变量贴上"只能存数字"的标签,像只能放砝码的天平,放字符串就失衡。
boolean开关型类型,只有 true/false 两个档位,像墙上的单开电灯开关。
类型关键字
namespace把相关变量、类型、函数装进一个带名字的容器,避免不同文件或模块里的同名东西撞车。
is在函数返回值里声明一个自定义类型保护,让 TypeScript 根据 true/false 结果把变量缩窄成更具体的类型。
protected类成员对类内部和子类可见,但类外面的代码不能直接访问,像是家庭内部群消息。
override明确告诉编译器这个方法是有意覆盖父类的同名方法;如果父类根本没有这个方法,编译器会当场报错。
工具类型
Partial把对象里所有必填字段变成可选,像填表时所有项都改成"可留空"。
Required把对象里所有可选字段强制变成必填,像把"可留空"全部打上星号。
Readonly把对象类型的所有顶层属性变成只读,重新赋值会被类型检查拦住;但如果属性值是对象或数组,其内部内容仍可修改。
Pick从对象类型里挑几个字段打包带走,像从整桌菜里只夹自己想吃的几盘。
Omit从对象类型里删掉几个指定属性,把剩下的字段打包成一个新类型。
Record批量制造"键都是 A 类型、值都是 B 类型"的字典,像一排放好标签、内容格式统一的档案柜。
Exclude从联合类型里把不想要的成员剔除,像分拣线上把坏果挑出来扔掉。
Extract从联合类型里挑出和指定类型兼容的成员,像从混合果仁里只把想要的品种挑出来。
NonNullable把联合类型里的 null 和 undefined 剔除,保证结果一定是有实际意义的值。
ReturnType从函数类型里抽出它最后带回来的类型,像看快递单上的"内件品名"。
Parameters把函数类型的参数类型按顺序抓出来,拼成一个元组类型,像看函数签名里的进货清单。
Awaited剥开 Promise 的外层,取出它 resolve 出来的类型;遇到嵌套 Promise 也会递归剥开。
符号
?在值层面是"如果条件成立就 A,否则 B"的岔路口;在类型层面是"这个属性可以不填"的留空框。
!在值层面是把 true 翻成 false 的反转开关;在类型层面是"我保证这里不是 null/undefined"的拍胸脯。
as const给值贴上一层"字面量类型 + 全只读"的保鲜膜,每个属性都被锁成最精确的字面量。
打开代码点读机,粘贴代码点词即查 →