组合类型表明一个值可以是几种类型之一,将每种类型与垂直线()分开。
抬起栗子:
组合类型需要注意,如果类型是组合类型,我们只能访问所有类型的常见方法或属性。如果要访问特定的类型和方法,则有两种方法:
使用
使用
请注意,在TSX文件中,React编译器用作此标识的组件,因此该表单通常在TSX文件中使用。这种主张类型只能提供一个简单的避免避免错误提示。您不能保证数据类型是某种类型,因此更好的方法是使用以下方法。
如果制定能力是您自己的,请尝试使用单个设计。
交叉类型是将多种类型组合为一种类型,将每种类型与()分开。
它包含所需类型的所有类型的特征,并包含所有类型的特征。
它类似于接口的继承函数,但两者不同。
要注意的一件事是,当交叉类型与组合的基本类型结合使用时,交叉类型将转换为类型,以便在执行基本类型时,它将无法满足类型的要求。
但是,您可以使用交叉类型和组合类型从基本类型的组合类型中确认一项;
为什么会有交叉类型?实际上,其主要目的是在两个对象合并后生成新的数据结构。这通常是在JavaScript中遇到的。目的是在对象合并后调节数据结构。
字符串的类型类型允许您指定字符串的必要固定值
使用StringType类型注册类型后,此值只能是上述三个值中的任何一个。
字符串类型类型还可以用来区分函数的功能:
同时,有类型的数字面数量,仅允许指定值的固定值
使用索引类型,编译器可以检查使用Dynamic属性名称的代码,该名称使用索引类型的目的。
对索引类型有两个关注点:
它返回t的已知公共属性名称的联合。它返回字符串字符串类型类型类型,这意味着得分-Type范围与定义此字符串类型的名称等效。类似于JavaScript的属性访问者只是它代表的类型。
Typescript提供了一种从旧类型-Mapping类型创建新类型的方法。在映射类型中,新类型的形式相同,可以在旧类型中转换每个属性。
在映射类型中,有两个注意点:
使用和?通过添加 +和-PREFIX来增加和删除相应的修饰符。如果不添加前缀,则默认值为 + **。
以上功能组合,总结常见的映射类型语法
使用映射类型,您可以编写一些工具类型的部分,必需,选择和阅读
条件类型语法:
其中,T,U,X和Y是所有占位符类型。您可以以这种方式理解这种语法。当类型T可以分配一个值为U的值时,将返回类型X,否则将返回类型y。
使用条件类型和条件链,我们还可以同时判断多种类型
ty t0 = typeName;//“字符串”类型t1 = typeName<"a">;//“字符串”类型t2 = typeName;//“布尔值” type t3 =键入<()?=>?void>;//“函数” t4 =键入
键入T10 =键入
t扩展了你?x:y t => a |b |C A |b |c扩展了你?x:y =>(a扩展u?x:y)|(b扩展u?x:y)|(c)|(c)|(c)|(c)|(c)|扩展u?X:Y)
键入名称= t excerlean?“ y”:“ n”;
类型包装tuple = [t]扩展了[布尔值]?“ y”:“ n”;type wrappedarray = t []扩展了布尔值[]:“ y”:“ n”;类型WratedPromise = Promise Exce?“ n”;类型T0 =裸
类型排除
type functionPropertyNames = {[k in Keyof t]:t [k]扩展函数?k:从不;} [keyof t];type functionProperties =选择
键入nonfunctionpropertynames = {[k in Keyof t]:t [k]扩展功能?下一步:k;} [keyof t];键入nonfunction properties =选择
接口用户{id:number;名称:字符串;衰老:数字;updateName(newname:string):void;}
= nonfunctionProperties;// {身份证号;名称:字符串;AGPE:数字;}
类型排除
原始:https://juejin.cn/post/70960805555170594829